所以我现在正在处理一些代码。有一个#saveButton
,它通过jQuery附加了一个点击功能:
$("#saveButton").click(function(){
...
if(someCondition){
$("#addRowsButton").click();
}
});
绑定到#addRowsButton
的函数在绑定到#saveButton
的函数的其他地方的Java Spring标记中定义。此函数发出Ajax发布请求。我需要使用回调来包装此post请求,以便我可以在完成后发出第二个post请求。我可以轻松地将$("#addRowsButton").click();
函数的函数体复制并粘贴到我的#saveButton
函数中,并在ajax post函数的回调中进行第二次调用。无论如何要包含一个带有回调的click()函数,该回调在异步调用完成之前不会执行回调吗?本质上似乎反对异步,但可能有办法吗?
答案 0 :(得分:1)
不,这是不可能的。但您可以手动调用#addRowsButton的单击处理程序,该处理程序应返回$.ajax()
调用返回的jqXHR值。然后你可以使用它作为延迟第二个ajax调用执行的承诺:
var addRowsButtonHandler = function() {
return $.ajax({
// ajax options
});
}
$("#saveButton").click(function(){
...
if(someCondition) {
addRowsButtonHandler().then(function() {
// second ajax call
})
}
});
答案 1 :(得分:1)
您需要做的是在第一篇文章中使用函数作为参数进行成功回调。所以你可以这样做:
function callback2(){ stuff you need done on the second round trip to the server }
$.ajax(ajax stuff).success(function(callback2){
//do things you need done on the first trip
callback2()
}
答案 2 :(得分:0)
以下是如何处理它的:
//Fire off the request
var request = $.ajax({
url: "script.php",
type: "post",
data: {/*Whatever data you pass*/}
});
//Callback handler that will be called on success
request.done(function (response, textStatus, jqXHR){
//Do stuff
});
//Callback handler that will be called on failure
request.fail(function (jqXHR, textStatus, errorThrown){
alert('Fail!');
});