我試圖做一個簡單的ajax請求來加載一些XML時,當下拉選擇一個值。 XML包含根據用戶選擇的內容切換的圖像路徑。它在Firefox中效果很好(我沒有得到任何Javascript錯誤),但由於某種原因,Chrome中沒有任何反應。這是我到目前爲止:Ajax XML請求無法正常工作
<script type="text/javascript">
function loadXMLDoc(url) {
var xmlhttp;
var txt, txtBase, txtOverlay1, txtOverlay2, txtBlack, name, img;
if (window.XMLHttpRequest){
// code for IE7+, Firefox, Chrome, Opera, & Safari
xmlhttp=new XMLHttpRequest();
xmlhttp.overrideMimeType("text/xml");
}
else {
// code for IE6 & IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function() {
if (xmlhttp.readyState==4 && xmlhttp.status==200) {
txtBase='<img id="original"';
txtOverlay1='<img id="overlay1" class="overlay"';
txtOverlay2='<img id="overlay2" class="overlay"';
txtBlack='<img id="opacity" class="overlay"';
img=xmlhttp.responseXML.documentElement.getElementsByTagName("IMG");
name=img[0].getElementsByTagName("NAME");
txtBase = txtBase + name[0].firstChild.nodeValue + '/>';
txtOverlay1 = txtOverlay1 + name[1].firstChild.nodeValue + '/>';
txtOverlay2 = txtOverlay2 + name[2].firstChild.nodeValue + '/>';
txtBlack = txtBlack + name[3].firstChild.nodeValue + '/>';
txt = txtBase + txtOverlay1 + txtOverlay2 + txtBlack;
document.getElementById('inner_container').innerHTML = txt;
$(".red").css({"font-size":"2.0em"});
$(".blue, .green").css({"font-size":"1.0em"});
}
}
xmlhttp.open("GET",url,true);
xmlhttp.send();
}
</script>
而我用它調用它。
<select>
<option id="selected">Select a car</option>
<option onclick="loadXMLDoc('http://www.brandybrowauto.com/files/nissan.xml')">Nissan</option>
<option onclick="loadXMLDoc('http://www.brandybrowauto.com/files/mazdaspeed3.xml')">Mazdaspeed3</option>
</select>
任何幫助,得到這個在Chrome瀏覽器會在使代碼更是極大的讚賞,也是任何提示。我是阿賈克斯的初學者。
你可能會發現它更容易使用jQuery,它會處理AJAX跨瀏覽器的兼容性爲您服務。 –
鑑於您似乎已經在使用jQuery來設置CSS,您應該明確地將它用於Ajax。你可能也想用它來創建你的新元素。 (至於在Chrome中的實際問題 - 我不知道。) – nnnnnn
我一直想要嘗試和切換到所有的jQuery,但不幸的是,我只是進入ajax,將不得不做很多研究。但在此期間,我必須做些愚蠢的事情/不這樣做,導致它甚至沒有在chrome中加載xml文件。我嘗試了overrideMime技巧,無濟於事。 – Src1988