Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript-结果在IE中显示,但不在Chrome或FF中显示_Javascript_Jquery_Html - Fatal编程技术网

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

JavaScript-结果在IE中显示,但不在Chrome或FF中显示,javascript,jquery,html,Javascript,Jquery,Html,所以,我对Javascript还不熟悉,让我们把它放在一边 无论如何,我有下面的代码可以在IE中使用,但不能在Chrome或FF中使用。它应该从Reddit RSS中获取数据,然后输出,就这样。它只在IE中工作。有人能解释我在这里做错了什么吗 <html> <head>

所以,我对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>

由于$.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.write立即执行。ajax可能会也可能不会及时设置结果。您需要将结果添加到成功事件中的页面…类似于:

$.ajax({
    url: "http://www.reddit.com/.rss",
    type: 'get',    dataType: 'html',
    async: false,
    success: function(data) {
     $("#some-div").html(data);

    }  });

以这种方式处理如何:

(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:


示例:

您的HTML格式不正确。您的结束正文标记中有一个结束头标记。我很确定在页面加载后使用document.write会产生一些非常意外的后果……不过,这一点值得注意。你打败我了-这并不完全正确,async false应该在对$.ajax的调用完成之前计算要运行的成功回调。成功处理程序中的document.write将擦除整个页面,以确保在此处将异步标志设置为false。这里的问题实际上是三个Javascript引擎执行成功回调的方式存在细微差异。这可能是由检查它是否在IE中运行的代码造成的。基本上,IE代码似乎都在事件循环中的单个事件中运行,而Firefox和Chrome至少有两个事件-我不确定拆分是在调用成功回调还是初始的$.ajax函数,尽管如此,我仍然没有在成功函数中写入结果,它真的对你们有用吗?我目前正在工作,这显然有一些安全措施,但不确定这是否会影响它。@user988921同步执行此操作的原因是什么?有没有理由不建议将async保留为true?抓取RSS提要需要多长时间并不重要;一旦车到了,就把它塞进驾驶室,同时继续用卡车运输。是的,我只是抄了他的密码。他可能是因为赛车的缘故才把它放在那里的,所以它会执行内联或者其他什么。我只关心成功函数。哦,我明白了。是的,我不知道为什么,但在我发表评论之前,我没有看原始代码,所以我只看了ajax调用本身,即使你说了,我也不认为一开始就有竞争条件!。当然,你必须做一些不同的事情,比如呈现空页面,然后对文档执行Ajax调用,准备让异步为false。我仍然无法通过write-in-success函数获得结果,这对你们来说真的有效吗?我目前正在工作,这显然有一些安全性,不确定这是否会影响它,我认为您可能遇到的问题之一是跨站点安全性…通过ajax调用另一个域…注意,如果您更新jQuery版本,您可以更好地处理XML。
(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);
});
<div class="rssfeed">
    <h4>RSS News</h4> 
    <ul></ul> 
</div>