gpt4 book ai didi

javascript - Ajax 同步回调

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:38:43 26 4
gpt4 key购买 nike

我在本地文件夹中有一个 pageTest.html,此页面使用以下 Ajax 代码调用 service.ashx?i=...(返回值参数递增 +1):

.
.
getIncr: function(parameters, success){
$.ajax({
async: false,
type: methodType,
url: getTarget,
data: "n="+parameters,
dataType:"jsonp",
success: success
});
}
.
.

html 页面调用此函数 m 次(使用脚本..):

  .    
var start = function(){
.
.
var val = 0;
.
.
for(i=0; i<m; i++)
{
Foo.getIncr(val, function(returned_n){
val = returned_n;
});

}

};

在页面加载期间,调用以“异步模式”执行,但我在 Ajax 中设置了“async: false”。我阅读了这个问题并找到了原因,如果在不同的域中,Ajax 无法同步从 page.html 到 service.ashx 的调用。是否有针对该 service.ashx(在不同域中)在 page.html 中执行同步调用的解决方案?

最佳答案

嗯,问题是您不能发出同步 JSONP 请求。正如 Andy 指出的那样,它的实现方式是通过所谓的“脚本标签 hack”。在等待脚本标记被填充时,jQuery 无法停止 javascript 应用程序的执行。

因此,您正在调用 jQuery 的正确方法来发出 JSONP 请求,但因为它是 JSONP,所以不应用异步选项,并且没有办法解决它。您必须异步处理请求。

附带说明一下,无论如何在同步模式下使用 $.ajax 都不是一个好主意。如果请求需要太长时间才能完成,浏览器将停止,您的用户可能会收到一个弹出窗口,提示页面没有响应。

关于javascript - Ajax 同步回调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/631609/

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