Guten Tag!
Ich bin ein Plugin auf jQuery 1.4.4 mit getJSON()
Nach dem Upgrade auf 1,5 wird der Callback nicht aufgerufen. Das zurückgegebene JSON ist gültig (ich habe mit Validator überprüft).
Außerdem ist mir ein zusätzlicher get-Parameter aufgefallen ?callback=...
die jQuery der URL hinzufügt
Es scheint, dass ich herausgefunden habe, wie man einen Testfall erstellt und es scheint, dass JQuery validate 1.7 (neueste Version) die Ursache ist:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<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>
Vielleicht ist dieser Code im Plugin die Ursache:
// 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);