我开发一个内部的基于Web的工具异步Ajax调用如预期
在我需要生成基于一个数组值AJAX调用序列中不起作用。我作为同步之前提出的,如果我做了这样的话它会阻止浏览器,所以我不能能显示加载图像,而AJAX会。
因此,我将呼叫改为异步,现在会发生什么情况是ajax呼叫正在发送,响应与用户界面中的所有呼叫相同,但是如果我在萤火虫中检查响应是否清晰,如果我在循环中放一些警报,那么它工作正常。
我发布的代码作进一步参考
// calling the function within loop
$.each(texts, function (tind, tval) {
setTimeout(function() {
txtcmpare(tval, search_logo, ask_logo, option_logo);
},2000);
});
//the function which calls ajax (txtcmpare)
function txtcmpare(actval, sl, al, ol) {
var tch_locale = new Array();
var tch_tempname = new Array();
if (actval != "==" && actval != "") {
avail = 0;
tparam = actval;
//respout = findloacle(param);
setTimeout(function() {
findloacle(tparam, function (y) {
// my operations
});
},2000);
}
if I put some alert here, sometimes response are clear
}
//the ajax function
function findloacle(locparam,callback) {
//var loc = new Array();
$.ajax({
type: "POST",
url: "Services/Locale.asmx/ajaxresp",
contentType: "application/json; charset=utf-8",
data: JSON.stringify({ queryparam: locparam }),
dataType: "json",
cache: false,
success: function (data) {
//loc = result.d;
callback(data);
},
error: function() {
alert("error");
}
});
//return loc;
}
什么问题就用封闭来解决? – zeroflagL
保持内部变量的引用(值),否则异步调用可以使用最后一个值,而不是当前的一个。但我不知道这会在这种情况下作品我没有详细检查足够的代码,并使用超时可能是这里的问题 –
我明白倒闭的总体思路;)我只是不知道为什么一会想在这里添加一个。您保存的唯一值是'locparam',它在函数中既不会被更改,也不会被回调使用。 – zeroflagL