【发布时间】:2011-07-12 21:43:49
【问题描述】:
我在使用 jsonp search.json 正确检索 Twitter 数据时遇到了一些困难。
当我只获取一次数据时,它与这段代码完美配合:
function getTweets(){
$.ajax({
url: 'http://search.twitter.com/search.json',
type: 'GET',
dataType: 'jsonp',
jsonpCallback: 'tw_callback',
data: 'q=<?php echo urlencode($twitter_search); ?>+-RT&rpp=100'
});
}
function tw_callback(jsonp){
for( key in jsonp['results'] ) {
var tweet = jsonp['results'][key]['text'] ;
var from = jsonp['results'][key]['from_user'];
var avatar = jsonp['results'][key]['profile_image_url'];
tw_container.push([tweet,from,avatar]);
}
}
但是当我尝试使用 setInterval 每 xx 秒刷新一次数据时:
setInterval(function () { getTweets(); }, 1000*interval_tourniquet);
不幸的是,它不起作用。我遇到了这个错误:
NOT_FOUND_ERR:DOM 异常 8:一个 试图引用一个节点 在它不存在的上下文中。
基本上,每次我尝试在另一个函数中调用我的 getTweets() 函数时都会得到这个... :(
我尝试过的其他解决方案:
function getTweets(){
$.ajax({
url: 'http://search.twitter.com/search.json',
type: 'GET',
dataType: 'jsonp',
data: 'callback=tw_callback&q=<?php echo urlencode($twitter_search); ?>+-RT&rpp=100'
});
}
这样,它与我自己在另一台服务器上的 jsonp api 完美配合,但 Twitter 两次返回我的回调:
tw_callback(tw_callback({结果...
而且 jsonp 字符串没有被解释..
这有什么线索,有什么提示吗?
非常感谢!
【问题讨论】:
-
我刚刚在 Chrome 中测试没有问题。我所做的唯一更改是将
tw_callback的内容替换为console.log(jsonp)。您使用的是什么浏览器,您在多个浏览器中是否有相同的问题?这应该没有影响,但您可以将setInterval缩短为setInterval(getTweets, 1000*interval_tourniquet); -
不幸的是,它在 Chrome 或 Safari 上对我不起作用.. :(
标签: php javascript jquery api jsonp