0

阿贾克斯代码:

try { 
    xmlhttp = new XMLHttpRequest(); 
} 
catch(ee) { 
    try { 
        xmlhttp = new ActiveXObject("Msxml2.XMLHTTP"); 
    } 
    catch(e) { 
        try { 
            xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); 
        } 
        catch(E) { 
            xmlhttp = false; 
        } 
    } 
} 
div_base = ""; 
valor = 0; 

function abre(arquivo,metodo,div) { 
    div_base = div; 
    valor++; 
    xmlhttp.open(metodo,arquivo+"?valor="+valor); 
    xmlhttp.onreadystatechange=response 
    xmlhttp.send(null) 
} 

function response() { 
    nova_div = div_base; 
    document.getElementById(nova_div).innerHTML="<div>Loading...</div>" 
    if (xmlhttp.readyState==4) { 
        document.getElementById(nova_div).innerHTML=xmlhttp.responseText 
    } 
} 

html代码:

<form> 
    <select name="menu" style="width:400px; height:25px;">
        <option>Change Theme:</option>
        <option></option>
        <option onclick="javascript: abre('Chat_Themes/Default.html','GET','response2');">Default - Shadow Hunters</option> 
        <option onclick="javascript: abre('Chat_themes/Custom.html','GET','response2');">Custom - Shadow Hunters</option>  
    </select> 
</form>
<br />
<div id="response2"></div> 

我将“div = responce”更改为“div = responce2”,而没有更改顶部的 ajax 代码,我不确定是否必须更改 ajax 代码,或者我可以保留它,它可以正常工作,但如果它只是谷歌浏览器被延迟,它不适用于谷歌浏览器 idk,但它适用于 ff,即很好,有什么想法吗?

4

1 回答 1

1

尝试缩进你的代码:你会发现你的 try-catch 语句没有匹配的大括号。您也可以尝试像jshint这样的 Javascript 验证服务,但缩进应该是第一位的。

您可能需要考虑使用已经具有跨浏览器 AJAX 功能的第三方库,例如jQuery

于 2012-06-12T00:40:31.133 回答