为什么这个twitter api ajax请求不能在IE7中运行?

时间:2011-08-24 19:08:11

标签: jquery ajax twitter internet-explorer-7 cross-domain

此代码有效;只是,而不是IE7。我读过如果我包含callback=?强制JSONP,我可以让它在IE7中工作,但它仍然无效。

任何提示,建议,明显的错误?

<div id="twitter">
</div>
<script>
$(function(){
   $.ajaxSetup({ 
      cache: true,
      crossDomain: true,
   });
   $.getJSON('http://api.twitter.com/1/statuses/user_timeline.json?callback=?&screen_name=bozdoz', function(data) {
      $.each(data, function(i, tweet) {
      $('#twitter').append('<li>'+tweet.text+'</li>');
      });
   });
});
</script>

-

更新

这是我应该使用的代码。这是在StackOverflow精练数小时后编译的。在IE7中运行良好。谢谢大家。

$.ajax({
  url: 'http://api.twitter.com/1/statuses/user_timeline.json?screen_name=bozdoz',
  dataType: 'jsonp',
  cache: false,
  crossDomain: true,
  contentType: "application/json",
  success: function(data){
 $.each(data, function(i){
 $('#twitter').append('<p>'+this.text+'</p>');
 if(i==2) return false;
 });
},
  error: function(jqXHR, textStatus, errorThrown){
 $('#twitter').append('<p>'+jqXHR+" "+textStatus+" "+errorThrown+'</p>');
}
 });

4 个答案:

答案 0 :(得分:3)

尝试设置contentType

$.ajaxSetup({
  cache: true,
  crossDomain: true,
  scriptCharset: "utf-8" ,
  contentType: "application/json; charset=utf-8"
 });

P.S由api返回的json未被jsonlint

验证为有效的json

也始终将&callback=?附加到网址的末尾

答案 1 :(得分:2)

您的代码中还有一个额外的内容。

你想......

$.ajaxSetup({ 
  cache: true,
  crossDomain: true
});

答案 2 :(得分:1)

试试这个

<div id="twitter">
</div>
<script>
$(function(){
   $.ajaxSetup({ 
      cache: true,
      crossDomain: true
   });
   $.getJSON('http://api.twitter.com/1/statuses/user_timeline.json?screen_name=bozdoz&callback=?', function(data) {
      $.each(data, function(i) {
      $('#twitter').append('<li>'+this.text+'</li>');
      });
   });
});
</script>

答案 3 :(得分:1)

这是一个工作示例:http://jsfiddle.net/8h2Sv/3

告诉你不同的方法来实现它..