Php 服务器阻塞并行ajax请求
情况是,我正在使用API获取一些数据并更新我的数据库。我想向用户展示有关更新的信息 我的ajax请求是这样的Php 服务器阻塞并行ajax请求,php,jquery,ajax,Php,Jquery,Ajax,情况是,我正在使用API获取一些数据并更新我的数据库。我想向用户展示有关更新的信息 我的ajax请求是这样的 $.ajax({ url: '<?php echo base_url() ?>add_products/', data: "store_id="+store_id, type: 'POST', dataType: 'json', async : true, success: function(response) {
$.ajax({
url: '<?php echo base_url() ?>add_products/',
data: "store_id="+store_id,
type: 'POST',
dataType: 'json',
async : true,
success: function(response) {
if ( response.result == 'success') {
//some data
} else {
genError();
}
}
});
$.ajax({
url:“添加产品/”,
数据:“存储id=”+存储id,
键入:“POST”,
数据类型:“json”,
async:true,
成功:功能(响应){
如果(response.result==“success”){
//一些数据
}否则{
genError();
}
}
});
我正在尝试像这样更新流程
$.ajax({
url: '<?php echo base_url() ?>get_product_progress/',
data: "store_id="+store_id,
type: 'POST',
dataType: 'json',
async : true,
success: function(response) {
if ( response.result == 'success') {
console.log(response);
} else {
genError();
}
}
});
$.ajax({
url:“获取产品进度/”,
数据:“存储id=”+存储id,
键入:“POST”,
数据类型:“json”,
async:true,
成功:功能(响应){
如果(response.result==“success”){
控制台日志(响应);
}否则{
genError();
}
}
});
我没有使用任何php会话。我传递从数据库获取值的存储id。我想发送一个添加产品的请求,另一个请求检查添加了多少产品
问题是第一次请求添加产品时,get progress调用没有进行。只有在添加产品请求完成后,才会调用Get progress。我希望它们是平行的
我发现它的服务器有问题。服务器阻止第二个请求,直到第一个请求完成。那么,当ajax请求完成并相互独立时,如何让服务器返回ajax请求呢 您可以在时使用
$
例如:
$.when(
$.ajax({
url: '<?php echo base_url() ?>add_products/',
data: "store_id="+store_id,
type: 'POST',
dataType: 'json',
async : true,
success: function(response) {
if ( response.result == 'success') {
//some data
} else {
genError();
}
}
});
).then(function() {
$.ajax({
url: '<?php echo base_url() ?>get_product_progress/',
data: "store_id="+store_id,
type: 'POST',
dataType: 'json',
async : true,
success: function(response) {
if ( response.result == 'success') {
console.log(response);
} else {
genError();
}
}
});
});
$。什么时候(
$.ajax({
url:“添加产品/”,
数据:“存储id=”+存储id,
键入:“POST”,
数据类型:“json”,
async:true,
成功:功能(响应){
如果(response.result==“success”){
//一些数据
}否则{
genError();
}
}
});
).然后(函数(){
$.ajax({
url:“获取产品进度/”,
数据:“存储id=”+存储id,
键入:“POST”,
数据类型:“json”,
async:true,
成功:功能(响应){
如果(response.result==“success”){
控制台日志(响应);
}否则{
genError();
}
}
});
});
你所说的并行是什么意思?Ajax调用是异步的,我的意思是当一个添加产品的请求正在进行时,不会执行getprogress。它已被阻止,仅在添加产品请求完成后进行。我已尝试$。当。当您有不同的呼叫,但只有一个回拨时使用。我的情况是,有一个单一的电话与,没有一个单一的结果。两者都有不同的结果。when对此无效。@JunaidAtique我不太确定您想用$实现什么目标。当时,您是否尝试过延迟.done()
?或.ajaxComplete()
?正常。我得到了答案。问题在于php会话。我已经初始化了它。但当我将它从全局中移除,并将它与每个控制器分开时,它就工作了。谢谢你抽出时间。