Я использую Request.JSON от mootool для получения твитов из Twitter.
После получения я пишу в свойство .innerHTML для моего целевого элемента div.
Когда я проверяю это локально в виде файла, то есть file: // в URL, я вижу мои отформатированные твиты на веб-странице.
Когда я передаю это с моего локального веб-сервера, то есть http://,, отформатированные твиты не отображаются в моем div.
Что может быть причиной этого? (Я проверял это в Safari и Chrome на OSX ... такое же поведение)
Я включил код из раздела HEAD моей страницы.
Кроме того, когда я отлаживаю Javascript в Safari:
"TypeError: Результат выражения 'data' [undefined] не является объектом" появляется для объявления функции обратного вызова onComplete.
<script type="text/javascript" src="js/mootools-1.3-full-compat.js"></script>
<script type="text/javascript" src="js/jquery-1.4.3.js"></script>
<script type="text/javascript" src="http://twitterjs.googlecode.com/svn/trunk/src/twitter.min.js"></script>
<script type="text/javascript">
var jSonRequest = new Request.JSON(
{
url:'http://search.twitter.com/search.json?q=+nytimes+OR+TheEconomist',
onSuccess: function(data) {
var target = document.getElementById('twitter_content');
target.innerHTML = ''; //clear the contents
for(var i = 0; i < data.results.length ; i++) {
var tweet = data.results[i];
//process it and add html for hashtags and links
var processed_tweet_text = tweet.text;
//process HTTP urls first...otherwise we would get the added links for the hashtags
var twre = /(http\:\/\/[a-zA-Z0-9.\/]+)/ig
processed_tweet_text = processed_tweet_text.replace( twre, '<a href="$1">$1</a>' );
//process hashtags and add link
twre = /\@([a-zA-Z0-9_\-]+)/ig; //match twitter accounts starting with @ and includes and of these characters: a-z, A-Z, 0-9, "_" and "-" characters.
processed_tweet_text = processed_tweet_text.replace( twre, '<a href="http://twitter.com/$1">@$1</a>' );
target.innerHTML += '<div class="tweet"><a href="http://twitter.com/' + tweet.from_user + '">' + '<img src="' + tweet.profile_image_url + '"><div class="tweet_text"><div class="tweet_user"><a href="http://twitter.com/' + tweet.from_user + '">' + tweet.from_user + '</a></div><div class="tweet_message">' + processed_tweet_text + '</div></div></div>';
//console.log(tweet.from_user);
}
}
}).send();
</script>
UPDATE
OK. Итак, я нашел два ответа ... один с mootools, а другой с jQuery ... спасибо всем.
Для mootools, убедитесь, что вы получили файл «more» .js с классом Request.JSONP http://mootools.net/more/
(Я вырывал свои волосы, потому что получал ошибку конструктора ... и я наконец понял, что у меня нет класса Request.JSONP !!!)
Затем просто измените код на:
var jSonRequest = new Request.JSONP(
{...
Для JQuery:
//adding callback=? forces a JSONP call...so no issues with AJAX cross-domain requests
$.getJSON("http://search.twitter.com/search.json?q=+nytimes+OR+TheEconomist&callback=?",
function(data) {...