0

可能重复:
Jquery:将ajax调用的值返回给调用者函数?

在下面的代码中,

我正在尝试将我的 ajax 调用放入需要它的函数中,但 makeIt() 不会从 ajax 调用中返回“usa?或者我是否将这一切都搞错了?

var makeIt = function () {
    var getStuff = function () {
        return $.ajax({
          type: "POST",
          url: "my.php",
          data: {
            id: "2"
          },
          success: function (data) {
            data
          }, // data will return string "usa"
          error: function () {
            alert("error");
          }
        });
      };
    return getStuff();
  };
var result = makeIt() //result should = "usa"
4

3 回答 3

2

data仅仅在函数中编写success并不能实现任何目标。

  success: function (data) {
    data
  }

它需要像

  success: function (data) {
     doSomethingWith(data);
  }
于 2012-07-11T09:18:30.130 回答
2

你这样做是错的。$.ajax 调用是任意同步的,makeIt 无法返回通过 $.ajax 调用获得的值,您可以这样做:

var makeIt = function (callback) {
    $.ajax({
        type: "POST",
        url: "my.php",
        data: { id: "2" },
        success: callback,
        error: function () { alert("error"); }
    });
};

makeIt(function (result) { 
    //result should = "usa"
});  

这样,您将有一个很好的 $.ajax 调用包装器,并提供了所有参数和错误处理。

于 2012-07-11T09:21:49.280 回答
1

将“结果变量”定义为全局变量。

然后为您的项目添加额外的功能。

var result;

var makeIt = function () {


    var getStuff = function () {

       return $.ajax({
            type: "POST",
            url: "my.php",
            data: { id: "2" },
            success: function (data) { fnResult(data) },
            error: function () { alert("error"); }
        });


    };

function fnResult(data){result = data};
于 2012-07-11T09:21:59.020 回答