API Twitter не работает при успешном вызове AJAX

#ajax #django #twitter

#ajax #django #Twitter

Вопрос:

Используя Django, я создаю функцию поиска, которая впоследствии будет отображать твиты.

На основе пользовательского ввода AJAX отправляет сообщения в views, который возвращает список идентификаторов, которые следует использовать для получения твитов с помощью API twitter. Когда twttr.widgets.createTweet() вызывается в функции успеха AJAX, я получаю:

Отказано в выполнении скрипта из https://cdn.syndication.twimg.com/tweets.json?callback=__twttr.callbacks.cb0amp;ids=,,undefined,undefined,undefined,undefined,undefined,undefined,undefined,undefined,undefined,undefined,undefined,undefined,undefined,undefined,undefined,undefined,undefined,undefined,undefined,undefined,undefined,undefined,undefined,undefined,undefined,undefined,undefined,undefinedamp;lang=enamp;suppress_response_codes=trueamp;theme=lightamp;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 (который генерирует элементы для заполнения твитами):

 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. можете ли вы также поделиться своим кодом просмотра? он работает нормально?

2. @AmanGarg Я проверил, что представление работает нормально, просто когда я вызываю twttr.widgets.createTweet(), он выдает ошибку

Ответ №1:

Я нашел проблему. Проблемой был запуск twttr.widgets.createTweet() с данными из вызова AJAX, поскольку ответ AJAX был JSON. Это приводит к тому, что идентификаторы не определены, и API это не понравилось. Использование data.key в качестве параметра исправляет это. Все еще не уверен, почему эта ошибка возникает только при вызове AJAX, но теперь она работает.