Ajax请求不是异步的
我有一个ajax问题:Ajax请求不是异步的,ajax,Ajax,我有一个ajax问题: foreach(ids as id){ $.ajax({ url:'script.php', data:'id='+id, cache:false, }); } 如果我循环6次(在我的foreach循环中),我应该向服务器发出6个异步请求。但是本例中的ajax调用是同步调用,而不是异步调用。有人知道为什么会发生这种情况吗?为什么不将所有id发送到脚本,然后循环它们会更快更准确 Javascript: // you can send the
foreach(ids as id){
$.ajax({
url:'script.php',
data:'id='+id,
cache:false,
});
}
如果我循环6次(在我的foreach循环中),我应该向服务器发出6个异步请求。但是本例中的ajax调用是同步调用,而不是异步调用。有人知道为什么会发生这种情况吗?为什么不将所有id发送到脚本,然后循环它们会更快更准确 Javascript:
// you can send the whole array in once i think not for sure
$.ajax({
url:'script.php',
type: 'POST',
data: ids,
cache:false,
success:function(msg)
{
// when done
}
});
script.php:
foreach($_POST as $id)
{
[............] // do your thing
}
您是否尝试过将async参数设置为true
foreach(ids as id)
{
$.ajax({
url:'script.php',
async: true,
data:'id='+id,
cache:false,
});
}
您如何确认这些调用是同步的而不是异步的 好的,谢谢。经过几个小时的分析和思考,我意识到了为什么这个脚本会同步:我打开script.php文件,我注意到了这一点和文件的开头:
<?php
session_start();
$var1=$_SESSION['SOMEVAR'];
.......
//do php script.....
.......
?>
因此,我对使用session的php脚本进行了并行ajax调用,但在本例中,sessions锁定了要同步执行的调用,这仅仅是因为session vars请求,所以这个问题的解决方案是:
<?php
session_start();
$var1=$_SESSION['SOMEVAR'];
//get all session var
......
session_write_close();//then close it
.......
//do php script.....
.......
?>
在session\u write\u关闭时,我有了脚本以异步方式进行ajax调用。这里有一个很好的解释
这太棒了,它和albanx一样解决了我的问题,谢谢我在控制台中运行了这段代码,我有6个并发请求:for(var i=0;i使用IE?它一次只允许两个连接。而且JS在IE中没有线程化…你在其他浏览器中尝试过这个吗?@Sean,IE从IE 5开始就支持异步AJAX调用。在其他浏览器支持或知道任何调用之前AJAX@Shiv库马尔,我知道它支持“异步”但是它在幕后使用activex魔术使其异步。Javascript在IE中不是传统意义上的线程。@Sean就运营问题而言,IE是异步的,不是吗(进行AJAX调用)?那么你的评论就没有意义了(至少就这个问题而言。此外,由于IE7 XMLHTtpRequests不是使用ActiveX实现的。不,我不能这样做,因为每个请求都必须是独立的。你可以关注本教程,这里可能有一些东西可以帮助你:这是一个乞丐指南,通常我会按照你的建议何时提出多个请求est与ajax合二为一,但在这种情况下,我需要并行请求。我尝试过这种方法,但没有任何改变,事实上请求是异步的,但响应是同步的。请看我的解决方案答案很棒!thanx。我很困惑。我想我必须使用多任务来完成这项任务。。
<?php
session_start();
$var1=$_SESSION['SOMEVAR'];
//get all session var
......
session_write_close();//then close it
.......
//do php script.....
.......
?>