$ .ajax在Internet Explorer 6,7或8中不起作用?

时间:2011-05-21 17:13:49

标签: jquery xml ajax

我已经尝试了几次,但在Internet Explorer 6,7或8中无效。在Firefox中运行。我正在做的是使用$ .ajax将数据插入到我的文档中。以下是我的代码:

//Example using jQuery
$(document).ready(function() {

    $('li a.example').click(function(){
        $.ajax({
        type: "GET",
        url: "news-stories.xml",
        dataType: "xml",
        success: function(xml) {
            $(xml).find('news_story').each(function(){
            var title = $(this).find('title').text();
            var company = $(this).find('story_company').text();
            var author = $(this).find('story_author').text();
            $('<div class="items" id="link_'+author+'"></div>')
                        .html('<a href="'+company+'">'+title+'</a>')
                        .appendTo('#top-main-content');
            /*$(this).find('desc').each(function(){
              var brief = $(this).find('brief').text();
              var long = $(this).find('long').text();
              $('<div class="brief"></div>').html(brief).appendTo('#link_'+id);
              $('<div class="long"></div>').html(long).appendTo('#link_'+id);
              });*/
            });
        }
        });
    });

});

我正在尝试使用点击功能将此数据加载到#top-main-content中。谁能告诉我为什么这不起作用?

我正在将.xsl样式的.xml文档作为news-stories.xml加载到浏览器中,我在myt news-stories-style.xsl中声明了这个函数。请帮忙。

麦克

2 个答案:

答案 0 :(得分:0)

此代码有效。我担心你的xml文件路径不正确。你能告诉我们什么是服务器响应代码吗?

此外我认为内部脚本标记<![CDATA[不是必需的(但不确定,有人请确认)


嗨,我刚刚发现了更多相关信息。 jquery xml有问题而且总是不起作用。而且,如果文件在本地文件系统中,那么它总是在IE中不能正常工作,但是当文件在服务器中时它可以正常工作。

解决方案: 将xml转换为json然后使用它。有用的链接:http://fyneworks.com/jquery/xml-to-json/

答案 1 :(得分:0)

我遇到了这个问题 - 从jQuery中解析XML。决定我不需要jQuery来处理XML的东西。所以我只是将它加载到XMLDocument中,并使用常规XMLDOM methods那种的方式参与其中。

function httpGet (location, cb) {
    var xhr;
    if (window.XMLHttpRequest)  {
        xhr=new XMLHttpRequest();
    }
    else if (window.ActiveXObject) {
        xhr=new ActiveXObject("Microsoft.XMLHTTP");
    }

    xhr.onreadystatechange = function(event){
        if (xhr.readyState == 4) {
            if (xhr.status == 200) {
                var text = xhr.responseText;
                if (typeof cb == "function") { cb(text);}
            }
        }
    };

    xhr.open("GET",location,true);
    xhr.send("");
}

function xmlDocFromText (text) {
    var xmldoc;
    if (window.DOMParser) {
        var parser = new DOMParser();
        xmldoc = parser.parseFromString(text,"text/xml");
    }
    else if (window.ActiveXObject) {
        xmldoc = new ActiveXObject("Microsoft.XMLDOM");
        xmldoc.loadXML(text);
    }
    return xmldoc;
}


$('li a.example').click(function(){
    httpGet("news-stories.xml", function(text) {
        var doc = xmlDocFromText(text);
        // use XMLDOM methods here
        var elts = doc.getElementsByTagName("news_story");
        for (var i=0; i<elts.length; i++) {
            var elt = elts[i];
            var title = elt.getElementsByTagName('title')[0].text;
            var author = elt.getElementsByTagName('story_author')[0].text;
                ...
        }

    });
});