JavaScript-结果显示在IE,但不是Chrome或FF

JavaScript - Results Displaying in IE but not Chrome or FF

本文关键字:Chrome FF 结果 显示 IE JavaScript-      更新时间:2023-09-26

所以,我是Javascript的新手,让我们把它排除在外。

无论如何,我有以下代码可以在IE中工作,但不能在Chrome或FF中工作。它应该从Reddit RSS中获取数据,然后输出它,仅此而已。它只在IE中运行。有人能解释我在这里做错了什么吗?

<html>                                                                  
<head>                                                                  
<script type="text/javascript"         
 src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>          
<script type="text/javascript"> 

var result = null;
 $.ajax({
    url: "http://www.reddit.com/.rss",
    type: 'get',
   dataType: 'html',
    async: false,
    success: function(data) {
     result = data;
    }
 });
 document.write(result);
</script>
</head>
</body>
</html>
是的,这段代码看起来不对。这是比赛条件。document.write立即执行。ajax可能已经或可能没有及时设置结果。您需要将结果添加到成功事件的页面中。。。类似于:
$.ajax({
    url: "http://www.reddit.com/.rss",
    type: 'get',    dataType: 'html',
    async: false,
    success: function(data) {
     $("#some-div").html(data);
    }  });

由于$.ajax是异步的,您有竞争条件。改为在成功处理程序中显示结果,以确保请求已完成。

 $.ajax({
    url: "http://www.reddit.com/.rss",
    type: 'get',
   dataType: 'html',
    async: false,
    success: function(data) {
      document.write(data);
    }
 });

更新

由于您将async设置为false,因此上述语句不适用。然而,我从来没有找到使用document.write()的好理由,这可能是您问题的一部分。尝试使用其他方法将数据注入页面,如.html().append()alert()等。在document.ready中这样做也不会有什么坏处。

$(document).ready(function() {
    var result = null;
     $.ajax({
        url: "http://www.reddit.com/.rss",
        type: 'get',
       dataType: 'html',
        async: false,
        success: function(data) {
         result = data;
        }
     });
    alert(result);
    $("body").append(result);
});

以这种方式处理:

(function(url, callback) {
    jQuery.ajax({
        url: document.location.protocol + '//ajax.googleapis.com/ajax/services/feed/load?v=1.0&num=10&callback=?&q=' + encodeURIComponent(url),
        dataType: 'json',
        success: function(data) {
            callback(data.responseData.feed);
        }
    });
})('http://www.reddit.com/.rss', function(feed) {
    var entries = feed.entries,
        feedList = '';
    for (var i = 0; i < entries.length; i++) {
        feedList += '<li><a href="' + entries[i].link + '">' + entries[i].title + '</a></li>';
    }
    jQuery('.rssfeed > ul').append(feedList);
});

HTML:

<div class="rssfeed">
    <h4>RSS News</h4> 
    <ul></ul> 
</div>

示例:http://jsfiddle.net/QusQC/