我希望此函数返回ajax调用是否成功。有什么办法可以做到吗?我下面的代码无法做到这一点。
function myFunction(data) { var result = false; $.ajax({ type: "POST", contentType: "application/json", dataType: "json", url: "url", data: data, error: function(data){ result = false; return false; }, success: function(data){ result = true; return true; } }); return result; }
不幸的是,您不能将值返回给包装异步回调的函数。取而代之的是,您从AJAX请求进行的成功回调会将数据和控制权移交给另一个函数。我在下面演示了这个概念:
myFunction的定义:
// I added a second parameter called "callback", which takes a function // as a first class object function myFunction(data, callback) { var result = false; $.ajax({ type: "POST", contentType: "application/json", dataType: "json", url: "url", data: data, error: function(data){ result = false; // invoke the callback function here if(callback != null) { callback(result); } // this would return to the error handler, which does nothing //return false; }, success: function(data){ result = true; // invoke your callback function here if(callback != null) { callback(result); } // this would actually return to the success handler, which does // nothing as it doesn't assign the value to anything // return true; } }); // return result; // result would be false here still }
回调函数定义:
// this is the definition for the function that takes the data from your // AJAX success handler function processData(result) { // do stuff with the result here }
调用myFunction:
var data = { key: "value" }; /* some object you're passing in */ // pass in both the data as well as the processData function object // in JavaScript, functions can be passed into parameters as arguments! myFunction(data, processData);