2010-06-11 72 views
0

我需要var long才能導出爲html而不是文本。我知道我有.text(),但是當我使用.html()時它不起作用。另外,如果我在聲明變量時將.text()取出並且它在IE中不起作用?jquery XML,我需要.html()不是.text()但不工作?

這樣做的原因是,在XML某些單詞會有像 HTML標籤,我需要那些得到認可。當我拿出.text()後,我想我解決了它,但後來我看着IE瀏覽器,我什麼都沒有。

$(document).ready(function(){ 
$.ajax({ 
type: "GET", 
url: "xml/sites.xml", 
dataType: "xml", 
success: function(xml) { 
$(xml).find('site').each(function(){ 
    var id = $(this).attr('id'); 
    var title = $(this).find('title').text(); 
    var class =$(this).find('class').text(); 
    $('<div class="'+class+'" id="link_'+id+'"></div>').html('<h2>'+title+'</h2>').appendTo('#page-wrap'); 
    $(this).find('desc').each(function(){ 
    var long = $(this).find('long'); 
    var url = $(this).find('url').text(); 
    $('<div class="long"></div>').html(long).appendTo('#link_'+id); 
    $('<a href="http://'+url+'"</a>').html(url).appendTo('#link_'+id); 
    }); 
}); 
} 
}); 
});// JavaScript Document 
+1

使用JSON而不是:) – 2010-06-11 20:11:51

+0

在你的IE中,'.find()'調用是否適合你?我同意@Josh。如果可能,請使用JSON而不是XML。這樣你就可以在甜蜜的甜蜜的JavaScript裏工作。 – user113716 2010-06-11 20:29:33

回答

1

我有類似的問題,我找到了解決辦法...之前調用AJAX功能,檢查其瀏覽器,然後根據定義內容類型變種....在有prase功能,你做更多的代碼根據微軟標準和Ajax的其餘瀏覽器......以及IE10是兼容的XML內容類型現在...這裏是完整的代碼...我已經測試了IE 7和它的作品完美...希望這回答你的問題...

(function ($) { 

    $.fn.myplugin = function (CP_ID) { 

    var selected_dataType = ""; 

    if (currentBrowser().browser == "IE" && currentBrowser().version < 10) { 

     selected_dataType = "text"; 
    } 
    else { 
     selected_dataType = "xml"; 
    } 

    $.ajax({ 
    type: "GET", 
    url: "XML_file.xml", 
    dataType: selected_dataType, 
    success: function (xml) { 

     var processedXML_01 = parseXml(xml); 

     $(processedXML_01).find('myRecord').each(function() { 
       //process you code// 
     }); 
     }, 
    error: function() { 
     alert("An error occurred while processing XML file."); 
    } 
    }); 

    } //end plugin function 

    })(jQuery); 


    function parseXml(xml) { 

    if (currentBrowser().browser == "IE") { 

    if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safari 
     xmlhttp = new XMLHttpRequest(); 
    } 
    else {// code for IE6, IE5 
     xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); 
    } 

    xmlhttp.open("GET", "XML_file.xml", false); 
    xmlhttp.send(); 
    xmlDoc = xmlhttp.responseXML; 

    xml = xmlDoc; 
    } 
     return xml; 
    } 


function currentBrowser() { 

$.returnVal = ""; 

var browserUserAgent = navigator.userAgent; 

if (browserUserAgent.indexOf("Firefox") > -1) { 

    $.returnVal = { browser: "Firefox" }; 
} 

else if (browserUserAgent.indexOf("Chrome") > -1) { 

    $.returnVal = { browser: "Chrome" }; 
} 

else if (browserUserAgent.indexOf("Safari") > -1) { 

    $.returnVal = { browser: "Safari" }; 
} 

else if (browserUserAgent.indexOf("MSIE") > -1) { 

    var splitUserAgent = browserUserAgent.split(";"); 

    for (var val in splitUserAgent) { 

     if (splitUserAgent[val].match("MSIE")) { 

      var IEVersion = parseInt(splitUserAgent[val].substr(5, splitUserAgent[val].length)); 
     } 
    } 

    $.returnVal = { browser: "IE", version: IEVersion }; 
} 

else if (browserUserAgent.indexOf("Opera") > -1) { 

    $.returnVal = { browser: "Opera" }; 
} 

else { 
    $.returnVal = 
    { browser: "other" }; 
} 

return $.returnVal; 
}