2010-10-21 28 views
1

我希望你能帮助我解决这个问题。代码应该使用返回XML的php脚本来显示mysql数据(后端脚本可以很好地传递良好的XML - 用我以前关于Stack Overflow的问题进行检查)。在做jQuery AJAX .get调用时,IE浏览器不输出任何内容 - 其他浏览器都很好

我正在使用jQuery 1.4.2来做一个.get AJAX调用 - 而且我无法让Internet Explorer显示出来。 Chrome,Safari,Chromium,FireFox和Opera在这里工作得很好 - 我想知道我做错了什么?

我查问题有关IE和jQuery,我发现这段代码,可以帮助,但它不工作:

function parseXml(xml) 
{ 
    if (jQuery.browser.msie) 
    { 
     var xmlDoc = new ActiveXObject("Microsoft.XMLDOM"); 
     xmlDoc.loadXML(xml); 
     xml = xmlDoc; 
    } 

    return xml; 
} 

有什么我可以做我的显示在Internet Explorer中的职位?

我在xml解析函数的开头放置了一个“警报”,但Internet Explorer永远不会显示警报。其他浏览器可以。似乎它甚至不从jQuery的。获得执行

function(xml) { bazinga_getposts(xml); } 

感谢您的想法! IE的版本是8

下面是完整的代码:

var ajax_content_left=$("#ajax_content_left"); 
var ajax_content_left_pagination=$('#ajax_content_left_pagination'); 

function parseXml(xml) 
{ 
    if (jQuery.browser.msie) 
    { 
     var xmlDoc = new ActiveXObject("Microsoft.XMLDOM"); 
     xmlDoc.loadXML(xml); 
     xml = xmlDoc; 
    } 

    return xml; 
}   

$.get("bazinga_blob/getposts.php", 
    { 
     category:"1", 
     post_tags:"", 
     language:"pl", 
     author:"1", 
     posts_per_page:"2", 
     current_page:"1", 
     order:"desc", 
     hard_limit:"", 
     show_hidden:"1"  
    }, function(xml) { bazinga_getposts(xml); },'xml'); 

function bazinga_getposts(xml) 
{ 
    alert('found it'); 

    thexml=$(xml); 
    thexml=parseXml(thexml); 

    var fill_this=''; 
    var fill_pagination=''; 
    var ile_stron=thexml.find('LastPage').text(); 

    thexml.find('Post').each(function() 
     { 
      fill_this+='<h1>'+thexml.find('PostTitle').text()+'</h1>'; 
      fill_this+='<article>'+thexml.find('PostBody').text()+'</article>'; 

     }); 

    for (i=1;i<=ile_stron;i++) 
    { 
     fill_pagination+='<li><a href="#'+i+'">'+i+'</a></li>';  
    } 

    ajax_content_left.append(fill_this); 
    ajax_content_left_pagination.append(fill_pagination); 
} 
+0

你可以缩进代码,请? (每行之前4个空格) – drudge 2010-10-21 19:41:54

+0

当然,我在一秒钟之内,谢谢! – Greg 2010-10-21 19:43:33

回答

0

也许返回的内容是无效的XML;看看它是否适用于纯文本。另外,尝试设置错误回调。如果一切都失败了,您可以尝试debug it via Microsoft Script Editor

+0

感谢Tgr,当我将它切换为纯文本时 - 该函数也在Internet Explorer中执行,但通过each.find('')循环播放...不会返回任何内容。 XML在此验证:http://www.w3schools.com/dom/dom_validate.asp。在php文件中,我尝试使用这些内容类型的头文件:application/xml,application/xhtml + xml和text/html – Greg 2010-10-21 20:26:44

2

发现了!

感谢您的帮助,我再次开始挖掘PHP脚本,我发现这里:http://articles.sitepoint.com/article/ajax-jquery/2唯一缺少的行:它是:

标题(“缓存控制:无缓存”);

,这是必要的在Internet Explorer中开始显示的东西

再见:)

+1

使用nocache头文件时,IE可能使用浏览器缓存而不是实际执行查询。就个人而言,即使指定了头文件,我也不会相信它的行为正确 - 通过在查询中附加一些随机字符串来打破缓存更安全。如果您将[缓存参数](http://api.jquery.com/jQuery.ajax/)设置为false,jQuery会照顾到这一点。 – Tgr 2010-10-22 17:21:02

相关问题