我正在使用通过使用POST和GET访问的JS API。这是一个电子通讯平台(Shopify),但我不认为这个问题与平台有关。无法按顺序触发两个jQuery ajax调用
我已经能够编写两个POST请求,无论是在代码还是在控制台中,都可以根据需要单独执行。但是,我根本无法让他们一个接一个地开火(第一次必须在第二次开始之前完成)。
第一请求如下(这将清除的推车,并且没有数据需要被发送,只是URL需要被张贴到):
function clearCart(){
$.ajax({
url: '/cart/clear.js',
method: 'POST',
success: function(){
console.log("cleared");
},
error: function(jqXHR, textStatus, errorThrown) {
console.log('jqXHR:');
console.log(jqXHR);
console.log('textStatus:');
console.log(textStatus);
console.log('errorThrown:');
console.log(errorThrown);
}
});
}
第二请求如下(这增加了某一个项目,说项目的购物车,在一定量,然后重定向到结帐):
function cartAdd(quantity, id){
$.ajax({
url: '/cart/add.js',
method: 'POST',
data: {
quantity: quantity,
id: id
},
success: function(data){
console.log("added");
window.location.href = '/checkout';
},
error: function(jqXHR, textStatus, errorThrown) {
console.log('jqXHR:');
console.log(jqXHR);
console.log('textStatus:');
console.log(textStatus);
console.log('errorThrown:');
console.log(errorThrown);
}
});
}
说我链接在一起的方式看起来是这样的(变量正确填写):
$.when(
clearCart(),
cartAdd(variantQuantity, variantID)
);
经过多次测试,我有时似乎有代码正常工作(可能是1/10的时间),所以我被引导认为这是一个时间问题,尽管我不能肯定地说我可以对这些结果持续不断的测试。
我唯一真正的线索是这些功能,当我使用.done()独立工作,但是当我使用.success(),他们返回了以下内容:
SyntaxError: Unexpected token :
at eval (<anonymous>)
at jquery-1.10.2.min.js?1013630…:4
at Function.globalEval (jquery-1.10.2.min.js?1013630…:4)
at text script (jquery-1.10.2.min.js?1013630…:6)
at On (jquery-1.10.2.min.js?1013630…:6)
at k (jquery-1.10.2.min.js?1013630…:6)
at XMLHttpRequest.r (jquery-1.10.2.min.js?1013630…:6)
任何帮助吗?
更新 我实际上可以通过明确指定数据类型'json'来解决语法错误。无论如何,这两个功能仍然行为不正常,有时只按正确的顺序工作。
根据这个答案,你是否无法在'success'响应中调用'addCart()'? https://stackoverflow.com/questions/10089447/jquery-ajax-request-inside-ajax-request – mrbubbles