我有一些代码,每3秒从“my_form”发布数据到JQuery $ post。 一切正常,但有时可能是因为互联网连接速度缓慢,当周期触发时,响应不会在3秒内完成。 这会产生错误。当然,我可以将延迟从3秒增加到6秒甚至更多,但它会减慢进程。 如何才能在获得响应后更改代码以发布数据?
$(document).ready(function() {
$("#my_form").submit(function() {
document.forms["my_form"]["submit"].disabled="true";
counter=0;
var post_data = function() {
$.post("formProcessor.php", $("#my_form").serialize(),
function(data) {
$("#formResponse").html(data);
txt = $("#formResponse").text();
...
//some code analyzing response
...
if (counter == 50){
clearInterval(nre);
return false;
};
changeFields(counter);
}
);
};
var nre=setInterval(post_data,3000);
return false;
});
});
答案 0 :(得分:2)
我会在下面的代码中执行某些操作。很简单。只是附加变量requestFinished
,如果请求完成,则设置为true。
var requestFinished = true;
$(document).ready(function() {
$("#my_form").submit(function() {
document.forms["my_form"]["submit"].disabled="true";
counter=0;
var post_data = function() {
if(requestFinished) {
requestFinished = false;
$.post("formProcessor.php", $("#my_form").serialize(),
function(data) {
requestFinished = true;
$("#formResponse").html(data);
txt = $("#formResponse").text();
...
//some code analyzing response
...
if (counter == 50){
clearInterval(nre);
return false;
};
changeFields(counter);
}
);
}
};
var nre=setInterval(post_data,3000);
return false;
});
});