我是jquery和Ajax的新手,我有以下问题。
是否允许多个Ajax请求?我使用PHP,我希望通过jquery Ajax进行表单提交,同时触发另一个Ajax请求,它将执行另一项任务。所有这一切都没有用户等待每个请求完成。
这可能吗?
感谢帮助人员!
*编辑* 我尝试了但是如果我尝试将浏览器重定向到另一个页面,它会等到ajax完成后再继续。
这是我测试的代码。
/* populate subcategory dropdown based on category select */
$('#categoria-selector').change(function (e) {
var cat = $("#categoria-selector option:selected").text();
alert(cat);
$.ajax({
type: "POST",
url: baseurl + 'precios/test',
success: function (data, status, xhr) {
alert('second alert');
}
});
$.ajax({
type: "POST",
url: baseurl + 'precios/test2',
success: function (data, status, xhr) {
alert('third alert');
}
});
});
在我的控制器上我有以下功能
function test() {
//sleep for 5 seconds
$first = date('Y-m-d H:m:s');
sleep(10);
$second = date('Y-m-d H:m:s');
//start again
$_SESSION['mivar'] = 'Started at ' . $first . ' and ended at ' . $second;
}
function test2() {
//sleep for 5 seconds
$first = date('Y-m-d H:m:s');
sleep(30);
$second = date('Y-m-d H:m:s');
//start again
$_SESSION['mivar2'] = 'Started at ' . $first . ' and ended at ' . $second;
}
答案 0 :(得分:3)
是的,您可以同时拥有多个ajax请求。
浏览器限制您可以对单个域发出的同时请求数,因此每个浏览器都有不同的限制。大多数浏览器将同时请求的最大数量限制为6.(http://www.browserscope.org/?category=network)
修改 - 对于您的输出,您看到的是什么时间戳?这可能是服务器端问题吗?例如。你使用的是一次只处理一个ajax请求的单线程(dev)服务器吗?
也可以中止ajax请求,因此如果你需要取消现有的请求,你可以这样做。这篇文章有更多细节:Abort Ajax requests using jQuery
答案 1 :(得分:0)
你可以并行执行ajax。这就是一切的目的。
但你不应该试图将浏览器重定向到另一个页面"响应ajax调用。您将数据返回到javascript并对其进行操作。