我一直在尝试设置custom ajaxTransports for jQuery在我们的产品的某些场景下缩短某些工作流程。然而,我在让这些传输受到尊重方面取得了零成功(而我有很多工作 custom ajaxPrefilters )。
使用多个版本的 jQuery 进行测试:
- 1.5.2
- 1.6.4
- 1.7.2
- 1.8.0
使用多个浏览器进行测试:
- 火狐15
- Chrome 21
- iOS 5 WebView
...
它们都不起作用。
JsFiddle 测试用例: http://jsfiddle.net/PVYut/
...
如果我添加一个 dataType
来缩小范围,那么它就可以正常工作。
JsFiddle 测试用例: http://jsfiddle.net/PVYut/1/
...
我只是做错了什么吗?只要我能做到这一点,我很高兴被告知! -_-
最佳答案
$.ajaxTransport("+*", function(options, originalOptions, jqXHR, headers, completeCallback ) {
console.log("Executing ajaxTransport");
return {
send: function( headers, completeCallback ) {
completeCallback(404, "error", {});
},
abort: function() {
/* abort code */
}
}
});
$.ajax("?jqTrans=" + (+(new Date())))
.done(function() {
console.log("ERROR: Should not have been successful!");
})
.fail(function() {
console.log("SUCCESS: Should have failed.");
});
这里是jsFiddle
关于ajax - 没有指定 dataType 的自定义 ajaxTransport 函数不会触发(根本!),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12481560/