5

在这里我粘贴了我的代码,我想将 $.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);
4

3 回答 3

14

请将 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
于 2012-10-17T08:37:29.057 回答
7

我猜你正在使用 jQuery 1.8+

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

请阅读细则。

从 jQuery 1.8 开始,不推荐在 jqXHR ($.Deferred) 中使用 async: false ;

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

尝试

http://jsfiddle.net/UgrLE/

于 2012-10-17T08:33:43.753 回答
3

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

已弃用 != 已删除,即使我接受了弃用,也是在返回的 jqXHR 的上下文中,此处未使用。

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

看起来@Murali 提供了一种解决方法,但对于那些对同域请求有问题的人来说,指出以上内容很重要。

于 2015-08-05T19:05:14.730 回答