gpt4 book ai didi

jquery - 升级到 jQuery 1.5 后未调用 getJSON 回调

转载 作者:行者123 更新时间:2023-12-01 04:28:04 25 4
gpt4 key购买 nike

美好的一天!

我已经使用 getJSON() 在 jQuery 1.4.4 上运行插件,升级到 1.5 后不会调用回调。返回的 JSON 是有效的(我已经使用验证器检查过)。

在深入挖掘之前,我想知道这是一个常见问题吗?我还注意到 jQuery 添加到 URL 的额外 get 参数 ?callback=...

提前致谢!

编辑:我似乎想出了如何创建测试用例,并且 JQuery validate 1.7(最新版本)似乎是原因:

<!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>

也许插件中的这段代码是原因:

// 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);

最佳答案

正如您所知,jQuery 的 ajax 模块几乎被完全重写。它现在使用一个 Promise Maker 对象,当新的 jXHR 对象达到状态已解决时,该对象就会触发。

如果您自己调用 .getJSON(),您可以尝试如下调用它:

$.getJSON('/path/file').then(function() {
// success
}, function() {
// fail
});

如果您使用的插件正在调用 .getJSON(),那么这就是一个问题,除非您可以/想要自己修复可能的问题。不管怎样,即使这个系统是新的,它“应该”向后兼容。

关于jquery - 升级到 jQuery 1.5 后未调用 getJSON 回调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4887438/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com