我有一个函数来处理 ajax 请求,并带有回调。
这段代码的作用是发送一个请求,并将响应写入我的 html 页面的 div
中。
但是我遇到了回调问题,并且我不确定该函数是否正常工作......
所以我的问题是关于 xmlhttp.onreadystatechange
中的两行代码,我已突出显示它们。
代码:
function check_if_over(callback) {
//first i collect some variables from the UI
var val1 = $('#timer').text(),
val2 = $('#work').val();
var val5=val1.split(":",1);
//I initialize the xmlhttp object
xmlhttp=GetXmlHttpObject();
if (xmlhttp==null)
{
alert ("Your browser does not support Ajax HTTP");
return;
}
xmlhttp.onreadystatechange = function() {
//*****my question is about this part inside the "if"
if (xmlhttp.readyState === 4 && xmlhttp.status === 200) {
document.getElementById('content0').innerHTML=xmlhttp.responseText;
callback.call(xmlhttp.responseText);
}
};
xmlhttp.open('GET','Controller?action=check&timer='+val5+'&work='+val2);
xmlhttp.send();
}
所以我的问题是,如果 xmlhttp.onreadystatechange
像这样正常工作,执行以下任务:(a) 在我的 div 中编写适当的代码,以及 (b) 执行回调。
谢谢!
编辑:
因此,在那之后我做了这件事,我发现它以非预期的方式进行打印,因为它跳过了该代码第一次迭代中的第一次打印,并使其恰好在第二次迭代的时间像这样的迭代:
point 2
point 2
(small wait)
point 1
(我基本上每 1 分钟在 2 个状态之间交替,所以我用它来异步检查服务器端的某些内容。所以这就是检查发生的地方。)
check_if_over(function() {
alert("point 1");
over = document.getElementById("value_ok").firstChild.nodeValue;
}
alert("point 2");
编辑2:
看来使用jquery它可以完美地工作,
point 2
(small wait)
point 1
point 2
(small wait)
etc..
最佳答案
如果您已经在使用 jQuery,为什么不使用 jQuery 的 $.get
函数呢?
function check_if_over(callback) {
//first i collect some variables from the UI
var val1 = $('#timer').text(),
val2 = $('#work').val(),
val5 = val1.split(":",1);
$.get('Controller?action=check&timer='+val5+'&work='+val2, function(data) {
$('#content0').html(data);
callback.call(data);
});
}
关于javascript - javascript ajax 请求中的回调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19245843/