返回JQuery ajax调用的值

我希望这个函数能够返回,或者不是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); 

无需回电。 您可以使用async属性来实现此目的。

 function myFunction(){ var retVal; $.ajax({ url:url, method: GET/POST, data: data, async: false, success:function(response) { retVal = response; } }); return retVal; } 

您可以在AJAX配置中指定async: false ,但文档指出这也会在AJAX调用期间锁定浏览器,因此不建议这样做。

添加这个帮助你的属性

 async: false 

不, myFunction无法返回ajax调用的成功,因为ajax调用是异步完成的。

您的代码将按以下顺序执行:

  1. var result = false;
  2. $.ajax将请求发送到服务器。
  3. return result (仍设置为false)。
  4. 从服务器收到响应时,将调用包含result = falseresult = true的成功或error handling程序。

处理此问题的正确方法是将任何依赖于ajax代码结果的代码移动到成功和错误函数中。