Twitter API 在 AJAX Success Call 中不起作用



使用 Django,我正在构建一个搜索函数,该函数随后将显示推文。

根据用户输入,AJAX 发布到视图,返回一个 id 列表,这些 id 应该用于通过 twitter API 获取推文。当在 AJAX 成功函数中调用twttr.widgets.createTweet()时,我得到:

拒绝执行来自的脚本https://cdn.syndication.twimg.com/tweets.json?callback=__twttr.callbacks.cb0&ids=%2C%2Cundefined%2Cundefined%2Cundefined%2Cundefined%2Cundefined%2Cundefined%2Cundefined%2Cundefined%2Cundefined%2Cundefined%2Cundefined%2Cundefined%2Cundefined%2Cundefined%2Cundefined%2Cundefined%2Cundefined%2Cundefined%2Cundefined%2Cundefined%2Cundefined%2Cundefined%2Cundefined%2Cundefined%2Cundefined%2Cundefined%2Cundefined%2Cundefined&lang=en&suppress_response_codes=true&theme=light&tz=GMT-0400',因为它的 MIME 类型 ('') 不可执行,并且启用了严格的 MIME 类型检查。

当调用 API 调用时,它可以完美地工作onLoad. 我已经确认成功函数已触发。 我尝试更改 AJAX 数据类型,但不起作用。

阿贾克斯调用:

$.ajax({
url: '/',
type: 'POST',
datatype : "json",
data: {
'search': x,
},
success: function(data) {
a = data
genTweets(a)
});

genTweets(生成元素以填充推文):

function genTweets(a){
if (a.length < 30){
for (i = 0; i < a.length; i++){
var newDiv = document.createElement("div"); 
x = String(a[i])
document.body.appendChild(newDiv)
newDiv.id = "tweet" + i
newDiv.setAttribute("tweetID", x)
newDiv.setAttribute("class", "offset-3 col-8")
genTweet(newDiv.id)
}
}
}

根推文:

genTweet = function(tweet){
var tweet = document.getElementById(tweet);
var id = tweet.getAttribute("tweetID");
$('.dropdown-toggle').dropdown('toggle');
twttr.widgets.createTweet(
id, tweet)
}

我发现了这个问题。使用来自 AJAX 调用的数据运行 twttr.widgets.createTweet() 是问题所在,因为 AJAX 响应是 JSON。 这导致 id 未定义,API 不喜欢这样。使用 data.key 作为参数可以修复它。仍然不确定为什么此错误仅在 AJAX 调用中引发,但它现在可以工作了。

最新更新