Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在Ajax中发出同步请求,用于jQuery1.8_Javascript_Ajax_Jquery_Twitter - Fatal编程技术网

Javascript 在Ajax中发出同步请求,用于jQuery1.8

Javascript 在Ajax中发出同步请求,用于jQuery1.8,javascript,ajax,jquery,twitter,Javascript,Ajax,Jquery,Twitter,我阅读了很多人提出的大多数问题,但正如jQuery1.8.xAsync的文档中所建议的那样:false是不推荐的 用例: 我想获取某个位置某个主题的所有tweet(使用twitter搜索API),我可以使用geocode和q参数获取这些tweet 但是我需要得到所有的页面,因为我们知道你可以从twitter api建议的api中得到15*100的结果 代码:可以在这里找到 问题是tweetsPerPage未定义,因为getTweets返回的对象的状态为1,但它的状态应为4 我正在使用jQuery

我阅读了很多人提出的大多数问题,但正如jQuery1.8.xAsync的文档中所建议的那样:false是不推荐的

用例: 我想获取某个位置某个主题的所有tweet(使用twitter搜索API),我可以使用geocode和q参数获取这些tweet

但是我需要得到所有的页面,因为我们知道你可以从twitter api建议的api中得到15*100的结果

代码:可以在这里找到

问题是tweetsPerPage未定义,因为getTweets返回的对象的状态为1,但它的状态应为4

我正在使用jQuery1.8.2,我尝试过修改它,但没有效果

有人能提出一些建议吗

编辑:
正如评论中所说,jsonp请求不支持同步请求

但带有回调的异步请求似乎正在工作,请参阅fiddle:

代码:

电话:


如我所见,getTweets返回的是XMLHttpRequest对象,而不是每页的tweets。这是有意的吗?是的,它返回的是XMLHttpRequest对象,但如果您在其中看到,状态是1,那么实际上在执行ajax请求之前,它会返回,为什么我不确定您是否知道,我甚至尝试了回调方法。。这在我的例子中是不起作用的。我使用了谷歌搜索,而jsonp的实现方式是无法同步完成的。你必须切换到callback,你说你试过了。你遇到了什么问题?好的,我正在尝试使用它,所以基本上是这样的,我将编辑这个问题..谢谢Andre的帮助,请尽快回复我。是的,它正在工作,但在这种方法中,我有一些问题,因为我想使用chrome将结果写入使用本地文件系统的文件,然后读取它,由于我没有任何控制权,我可能会转到另一个标签,即使一个标签所有页面都没有完成,所以考虑其他选择。我同意你的观点,我正在尝试使用BEN ALMAN创建的消息队列,可以在这里找到。
function main() {
for(hindex=0; hindex<HASHTAGS.length; hindex++)  {
    for (cindex=0; cindex<COORDINATES.length;cindex++) {
        for (pindex=0; pindex<NUMBER_OF_PAGES; pindex++) {
            getTweets(HASHTAGS[hindex], COORDINATES[cindex][1], COORDINATES[cindex][2], pindex+1, function(tweets) {
                TWEETS = TWEETS.concat(tweets); /*basically I am getting all the tweets in this, I just need a way by which after executing all the getTweets along with their success functions and the callback I get the control to myself which will help me in using TWEETS*/
            });
        }
    }
}
    function  getTweets(hashtag, latitude, longitude, pageIndex, callback) {
    $.ajax({    
            url: 'http://search.twitter.com/search.json',
            cache: false, 
            dataType: 'jsonp',
            data: {
                    q: hashtag,
                    geocode: latitude + "," + longitude + "," + RADIUS,
                    page: pageIndex,
                    rpp: RESULTS_PER_PAGE,
                    result_type: RESULT_TYPE
            },
            success: function (data) {
                var results = data.results;
                var tweets = [];
                $(results).each(function(index, tweetJSON) {
                        var tweet = {
                            created_at: 'Dhruven' + " " + pageIndex + " " + (index+1)
                        };
                        var tweetObj = JSON.stringify(tweet);
                        tweets.push(tweetObj);  
                });
                callback(tweets);
            }
    });
  }
function getTweets(hashtag, latitude, longitude, pageIndex, callback) {
    $.ajax({    
            url: 'http://search.twitter.com/search.json',
            type:'GET',
            dataType: 'jsonp',
            data: {
                    q: hashtag,
                    geocode: latitude + "," + longitude + "," + '10mi',
                    page: pageIndex,
                    rpp: 10,
                    result_type: 'recent'
            },
            success: function (data, status, xmlHttp) {
                var results = data.results;
                var tweets = [];
                $(results).each(function(index, tweetJSON) {
                        var tweet = {
                            created_at: 'Dhruven' + " " + pageIndex + " " + (index+1)
                        };
                        var tweetObj = JSON.stringify(tweet);
                        tweets.push(tweetObj);  
                });
                callback(data.results);
            }
    });
}
getTweets("#facebook", 42.3580555555556, -71.0602777777778, 2, function(tweets){
 $("#log").text(JSON.stringify(tweets)); })