我有一个表单收集一些信息,我使用 $.post
来处理 ajax 请求。
$.post(ajaxEndpoint, dataObject)
.done(function (response) {
if (response.status === 'success') {
// Send data to process asynchronously
otherApiCall(response.otherData);
// Redirect to the thank you page
window.location.replace(getThankYouUrl());
}
});
function otherApiCall (data) {
$.post(otherAjaxEndpoint, data);
}
据我猜测,我遇到的问题是,在进行其他 POST
之前,它重定向得太快。但我确实希望它异步POST
然后重定向,这样用户就不会等待第二个响应。我不在乎第二次响应的结果是什么。我只想完成第一个响应,发送第二个 POST
并立即重定向,以减少用户查看微调器的次数。
我的第二个 $.post
似乎没有在重定向发生之前及时发送,因为我从未从中获取数据。如果我注释掉重定向,我就会这样做。我不想等到第二个 done()
但我不知道如何不这样做。我不理解和/或做错了什么?
其他信息/更新
我确实可以控制服务器端处理。我可以在这方面做些什么来快速获得响应,而无需等待其余处理完成吗?
最佳答案
您可能想让第二篇文章完成,然后进行重定向。
一个简单的修复方法是从第二个方法返回 $.post
并使用第二个调用的 done()
来管理重定向
$.post(ajaxEndpoint, dataObject)
.done(function (response) {
if (response.status === 'success') {
// Send data to process asynchronously
otherApiCall(response.otherData).done(function(){
// second post call now complete
// Redirect to the thank you page
window.location.replace(getThankYouUrl());
}).fail(function(){
// handle failed response
});
}
});
function otherApiCall (data) {
return $.post(otherAjaxEndpoint, data);
}
关于javascript - `$.post` 有多少是阻塞的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33557920/