如何从AJAX请求返回结果

时间:2013-04-22 22:29:52

标签: php javascript jquery ajax

今天我正在创建一个名为“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 个答案:

答案 0 :(得分: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,

答案 1 :(得分:2)

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

$.ajax({
    ...
    async:false,
    ...
})

答案 2 :(得分:2)

你也可以这样做:

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

        }
    })
}

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

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

答案 3 :(得分:2)

可能只是用?

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

              }
           })
           return;
        }