用async false调用jQuery ajax是行不通的

时间:2012-10-17 08:32:38

标签: jquery ajax asynchronous

这里我粘贴了我的代码,我想返回$ .ajax的响应作为函数a()的响应。但是在结果出现ajax调用之前,它返回空f。请帮忙解决这个问题

a = function()
{
        var f = '';
    $.ajax({
          url: 'http://api.twitter.com/1/statuses/user_timeline.json?screen_name=immaulikvora&count=1&page=1&include_entities=1&callback=?',
          dataType: 'json',
          async: false,
          success: function(data) {
            f = data;
          }
        });    
    return f;
};


var lid = a();

alert(lid);

3 个答案:

答案 0 :(得分:11)

请将ajax分配给jqXHR对象,阅读responseText会对你有帮助。

 var jqXHR=$.ajax({
      url: 'http://api.twitter.com/1/statuses/user_timeline.json?screen_name=immaulikvora&count=1&page=1&include_entities=1&callback=?',
      dataType: 'json',
      async: false
    });    

jqXHR.responseText // This will give you the result

答案 1 :(得分:7)

我猜你正在使用jQuery 1.8 +

http://api.jquery.com/jQuery.ajax/

请阅读细则。

  

从jQuery 1.8开始,使用async:false和jqXHR($ .Deferred)   的弃用;

     

您必须使用完整/成功/错误回调。

尝试

http://jsfiddle.net/UgrLE/

答案 2 :(得分:2)

除非您为推特工作,否则我认为它失败了,因为" 跨域请求和dataType:" jsonp"请求不支持同步操作。"

已弃用!=已删除,即使已删除,我也会在已返回的jqXHR的上下文中进行弃用,此处未使用。

http://api.jquery.com/jQuery.ajax/

看起来@Murali提供了解决方法,但上述内容对于那些遇到同域请求问题的人来说非常重要。