jQuery Validate 1.7 breaks $.getJSON() on jQuery 1.5?
Good day!
I'm running a plugin on jQuery 1.4.4 with getJSON()
, after uprade to 1.5, the callback is not called. The returned JSON is valid (I've checked with validator).
Also I noticed additional get parameter ?callback=...
which jQuery adds to the URL
It seems I figured out how to create a test case and it seems that JQuery validate 1.7 (latest version) is the cause:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<开发者_如何学JAVA;html xmlns="http://www.w3.org/1999/xhtml" lang="ru">
<head>
<title>
</title>
<meta http-equiv="content-type" content="text/html; charset=utf8" />
<script type="text/javascript" src="js/jquery-1.5.min.js"></script>
<!--
If I uncomment this - it will not work
<script type="text/javascript" src="js/jquery.validate.js"></script>
-->
</head>
<body>
<script type="text/javascript">
$(function(){
$.ajaxSetup({ cache: false });
$('#clickme').click(function(){
var params = {userid : 'some-user-id-to-choose-right-temp-FTP-folder-for-the-user'};
$.getJSON('/ajax-page_material-edit-ftp-filelist.php', params, function(data) {
console.log(data);
});
});
});
</script>
<a href="#" id="clickme">Click Me!</a>
</body>
</html>
Maybe this code in plugin is the cause:
// ajax mode: abort
// usage: $.ajax({ mode: "abort"[, port: "uniqueport"]});
// if mode:"abort" is used, the previous request on that port (port can be undefined) is aborted via XMLHttpRequest.abort()
;(function($) {
var ajax = $.ajax;
var pendingRequests = {};
$.ajax = function(settings) {
// create settings for compatibility with ajaxSetup
settings = $.extend(settings, $.extend({}, $.ajaxSettings, settings));
var port = settings.port;
if (settings.mode == "abort") {
if ( pendingRequests[port] ) {
pendingRequests[port].abort();
}
return (pendingRequests[port] = ajax.apply(this, arguments));
}
return ajax.apply(this, arguments);
};
})(jQuery);
A ticket for the issue was already created and a patch has been submitted
https://github.com/jzaefferer/jquery-validation/issues/#issue/36
https://github.com/bigfix/jquery-validation/commit/9aa53f9241224ba349f9fe1b2c801be0f431b63b
This may be already well documented, but just in case, the answer on this post did it for me. Basically, update to jQuery Validate 1.8 and it will work with jQuery 1.5.2. Thanks @alexander-kahoun!
精彩评论