Twitter API在AJAX成功调用中不起作用

时间:2019-04-18 17:28:12

标签: ajax django twitter

使用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调用:

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

      });

genTweets(生成使用tweets填充的元素):

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:

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

1 个答案:

答案 0 :(得分:0)

我发现了问题。由于AJAX响应是JSON,因此使用来自AJAX调用的数据运行twttr.widgets.createTweet()成为问题。这会导致ID未定义,API对此并不满意。使用data.key作为参数修复它。仍然不确定为什么只在AJAX调用中抛出此错误,但现在可以使用。