jQuery:在ajax调用成功后返回数据

时间:2011-03-15 19:08:26

标签: javascript jquery ajax

我有这样的东西,它是一个简单的调用脚本,给我一个值,一个字符串......

function testAjax() {
    $.ajax({
      url: "getvalue.php",  
      success: function(data) {
         return data; 
      }
   });
}

但如果我打电话给这样的话

var output = testAjax(svar);  // output will be undefined...

那么如何返回值呢? 以下代码似乎也不起作用......

function testAjax() {
    $.ajax({
      url: "getvalue.php",  
      success: function(data) {

      }
   });
   return data; 
}

5 个答案:

答案 0 :(得分:381)

答案 1 :(得分:358)

从函数返回数据的唯一方法是进行同步调用而不是异步调用,但这会在等待响应时冻结浏览器。

您可以传入一个处理结果的回调函数:

function testAjax(handleData) {
  $.ajax({
    url:"getvalue.php",  
    success:function(data) {
      handleData(data); 
    }
  });
}

这样称呼:

testAjax(function(output){
  // here you use the output
});
// Note: the call won't wait for the result,
// so it will continue with the code here while waiting.

答案 2 :(得分:168)

你可以添加async选项,将false 添加到ajax调用之外。

function testAjax() {
    var result="";
    $.ajax({
      url:"getvalue.php",
      async: false,  
      success:function(data) {
         result = data; 
      }
   });
   return result;
}

答案 3 :(得分:-1)

Idk如果你们解决了它,但我建议采用另一种方式来实现它,并且它有效:)

    ServiceUtil = ig.Class.extend({
        base_url : 'someurl',

        sendRequest: function(request)
        {
            var url = this.base_url + request;
            var requestVar = new XMLHttpRequest();
            dataGet = false;

            $.ajax({
                url: url,
                async: false,
                type: "get",
                success: function(data){
                    ServiceUtil.objDataReturned = data;
                }
            });
            return ServiceUtil.objDataReturned;                
        }
    })

所以这里的主要想法是,通过添加async:false,然后让所有内容都等待,直到检索到数据。然后你将它分配给类的静态变量,一切都神奇地起作用:)

答案 4 :(得分:-13)

请参阅jquery docs示例: http://api.jquery.com/jQuery.ajax/ (约2/3页)

您可能正在寻找以下代码:

    $.ajax({
     url: 'ajax/test.html',
     success: function(data) {
     $('.result').html(data);
     alert('Load was performed.');
   }
});

同一页......降低。