我在 for 循环中调用 ajax 。 if ((Input.touchCount > 0) && (Input.GetTouch(0).phase == TouchPhase.Began))
{
GetComponent<Rigidbody2D>().velocity = Vector2.zero;
GetComponent<Rigidbody2D>().AddForce(jumpForce);
}
正在获取,但顺序不正确。
我必须在第一个div中显示第一个响应,在第二个div中显示第二个响应等等。但是没有显示任何内容。但是我提醒数据(响应),它是正确的但是没有正确的顺序。
我的代码是:
ajax response
我听说我可以设置时间延迟,如何以及在哪里?
请帮我找到解决方案。
答案 0 :(得分:1)
默认情况下,ajax请求是异步的。这就是为什么你得到不同顺序的回应。
您可以将ajax更改为同步(不推荐),也可以在一个请求中获取整个数据并循环响应。
这将是同步请求的设置:
$.ajax({
type: "POST",
url: remote_url,
data: postData,
async: false,
success : function(data) {
remote = data;
}
});
答案 1 :(得分:0)
使用async:false
像
$.ajax({
url:'yoururl',
type:'post',
data:{a:a,b:b},
async:false
})
答案 2 :(得分:0)
您是否尝试在循环中使用递归?此解决方案允许您在启动新请求之前等待响应,因此最终订单应该是正确的。
loadanswer();
function loadanswer(nos, h) {
if (typeof nos === typeof undefined) {
nos = $('#nos').val();
h = 0;
}
var lang = $("#hdn_lan_"+h).val();
var filename = $("#hdn_lanfile_"+h).val();
var pv = $("#hdn_pv_"+h).val();
$.post("ajaxCoderun.php", {filename:filename,lang:lang,pv:pv},function(data){
alert(data);
$("#ca_"+h).html("<span style='color:green;'>Correct Answer is: <b>"+data+"</b></span>");
if (h < nos) {
loadanswer(nos, h++);
}
});
}
}
答案 3 :(得分:0)
终于得到了解决方案:
我将新参数h
传递给ajax
页面,其中h
是for
循环变量。在 ajaxCoderun.php 页面中,我将新变量与结果一起追加。它看起来像:
$num = $_POST['num'];
echo $result."^".$num;
在jquery页面中,我分割数据并将结果设置在相应的div中。
现在我的代码看起来像这样:
function loadanswer(){
var nos = $("#nos").val();
var res = "";
for(var h=0;h<nos;h++){
var lang = $("#hdn_lan_"+h).val();
var filename = $("#hdn_lanfile_"+h).val();
var pv = $("#hdn_pv_"+h).val();
//alert(lang+" & "+ filename +" & "+pv);
$.post("ajaxCoderun.php", {filename:filename,lang:lang,pv:pv,num:h},function(data){
//alert(data);
var dataArray = data.split("^");
$("#ca_"+dataArray[1]).html("<span style='color:green;'>Correct Answer is: <b>"+dataArray[0]+"</b></span>");
});
}
}
loadanswer();