我试图做一个简单的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