1

今天我正在创建一个名为“sendData”的 Javascript 函数。

这是为了方便使用,而不是写出整个 ajax 语句。

无论如何,我知道它是异步的,我想知道如何等待并获得返回的值,而不是什么都不返回。这就是我所拥有的。

   function returnData(data)
{
    alert(data + " ddd");
    return data;
}

function sendData(data,file) {
    var a = ""
    $.ajax({
        url: file,
        data: data,
        type: "POST",
        success: function(newData)
        {
            a = newData;

        }
    })
    returnData(a);
}

我认为这会奏效,但事实并非如此。有谁知道我怎样才能等待它返回或什么?

最终代码

function sendData(data,file) {
    var a = ""
    $.ajax({
        url: file,
        data: data,
        type: "POST",
        async:false,
        success: function(newData)
        {
            a = newData;
        }
    })
    return a;
}
4

4 回答 4

3

好吧,如果您想保持异步,请在您的 中调用您的函数success,即:

function returnData(data)
{
    alert(data + " ddd");
    return data;
}

function sendData(data,file) {
    var a = ""
    $.ajax({
        url: file,
        data: data,
        type: "POST",
        success: function(newData)
        {
            returnData(newData);
        }
    })
}

这样,在您有东西要发送给它之前,您的函数不会被调用。否则,将其设置为等待响应,然后再继续async:false,输入参数。

于 2013-04-22T22:34:14.333 回答
2

如果您设置该选项async:false,它将等待回调返回。

$.ajax({
    ...
    async:false,
    ...
})
于 2013-04-22T22:32:09.047 回答
2

你也可以这样做:

function sendData(data,file) {
    var a = ""
    $.ajax({
        url: file,
        data: data,
        type: "POST",
        success: function(newData)
        {
            returnData(newData);

        }
    })
}

这是使用回调的典型方式。成功函数应该在成功时执行的代码。

您可能还想查看承诺:http ://api.jquery.com/promise/

于 2013-04-22T22:33:02.500 回答
2

可能只是使用?

         function sendData(data,file) {
           var a = ""
           $.ajax({
              url: file,
              data: data,
              type: "POST",
              success: function (newData) {
                 a = newData;
                 returnData(a);

              }
           })
           return;
        }
于 2013-04-22T22:37:35.033 回答