2010-10-21 30 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

相關問題