#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, но теперь она работает.