Javascript jqueryajax不会返回文本和/或发出错误警报

Javascript jqueryajax不会返回文本和/或发出错误警报,javascript,jquery,Javascript,Jquery,可能重复: 在下面的代码中 我试图将我的ajax调用放在一个需要它的函数中,但是makeIt()不会从ajax调用返回“usa”,或者我的做法完全错了吗 var makeIt = function () { var getStuff = function () { return $.ajax({ type: "POST", url: "my.php", data: { id: "2"

可能重复:

在下面的代码中

我试图将我的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"

仅仅在
success
函数中写入
数据
,并不能取得任何效果

  success: function (data) {
    data
  }
它应该是这样的

  success: function (data) {
     doSomethingWith(data);
  }

仅仅在
success
函数中写入
数据
,并不能取得任何效果

  success: function (data) {
    data
  }
它应该是这样的

  success: function (data) {
     doSomethingWith(data);
  }

您做错了。$.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调用的漂亮包装器,并提供了所有参数和错误处理。

您做错了。$.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调用的漂亮包装器,并提供了所有参数和错误处理。

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

然后将额外的功能添加到项目中

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};
将“结果变量”定义为全局变量

然后将额外的功能添加到项目中

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};

AJAX=异步JavaScript和XML…
$.AJAX()
函数不返回值-它执行
回调(
成功
)一旦远程url的执行完成…@ManseUK我想你是对的-我唯一关心的是,你提到的问题的答案是使用
async:false
witch,至少我认为这是一种不好的方法。@AndreasAL同意。。也许有更好的复制方法?可能的二副本:AJAX=异步JavaScript和XML…函数
$.ajax()
不返回值-它执行
回调(
成功
)一旦远程url的执行完成…@ManseUK我认为你是对的-我唯一关心的是,你提到的问题的答案是使用
async:false
witch,至少我认为这是一种不好的方法。@AndreasAL同意。。也许有更好的复制方法?可能有两种: