【问题标题】:Cross Browser Ajax Issue跨浏览器 Ajax 问题
【发布时间】:2013-06-01 09:56:23
【问题描述】:

我创建了一个适用于 chrome 和 firefox 但不是 i.e.8 的 ajax 函数,任何人都可以发现问题吗?

html部分:

<select id='choices'>
<option id="no" value="no" onClick="check()">No</option>
<option value="yes" onClick="check()">Yes</option>
</select>

Javascript 部分:

function check(){
    var a = document.getElementById("choices").value;
    var type = "label";
    ajaxFunction(a,type);
    if(a == "yes"){
        document.getElementById("results").style.display="block";
    }
    else{
        document.getElementById("results").style.display="none";
    }
}

AJAX 部分:

function ajaxFunction(result,dif){
    var ajaxRequest;  // The variable that makes Ajax possible!

    try{
        // Opera 8.0+, Firefox, Safari
        ajaxRequest = new XMLHttpRequest();
    } catch (e){
        // Internet Explorer Browsers
        try{
            ajaxRequest = new ActiveXObject("Msxml2.XMLHTTP");
        } catch (e) {
            try{
                ajaxRequest = new ActiveXObject("Microsoft.XMLHTTP");
            } catch (e){
                // Something went wrong
                alert("Your browser broke!");
                return false;
            }
        }
    }
    // Create a function that will receive data sent from the server
    ajaxRequest.onreadystatechange = function(){
        if(ajaxRequest.readyState == 4){
            if(dif == "label"){
                var ajaxDisplay = document.getElementById('results');
            }
            else{
                var ajaxDisplay = document.getElementById('results1');
            }
            ajaxDisplay.innerHTML = ajaxRequest.responseText;
        }
    }
    if(dif == "label"){
        var hiddenvalue = document.getElementById('hiddenvalue').value;
        var queryString = "?type=" + result + "&label=" + hiddenvalue + "&dif=" + dif;
    }
    else{
        var queryString = "?type=" + result + "&dif=" + dif;
    }

    ajaxRequest.open("GET", "scripts/script.php" + queryString, true);
    ajaxRequest.send(null); 
}

PHP 部分:

var_dump($_GET);

我不确定这是否只是兼容性问题,因为我在另一个项目中使用了与此非常相似的代码,但我也有一些其他脚本正在加载,例如 jquery 1.2。 3和谷歌分析(有高级链接跟踪器,我不得不摆脱它,因为它抛出了一个错误)。我已经检查了调试器并单击了错误时全部中断,我可以单击 onclick,但调试器中实际上没有显示任何错误。除了 jquery 之外,有没有人有任何建议(无法理解)

【问题讨论】:

  • 只是在 URL 正确时将 Ajax 加载到页面上,但 onclick 似乎没有响应是或否来添加或删除内容,就像在 Firefox 和铬

标签: php javascript ajax internet-explorer-8 cross-browser


【解决方案1】:

IE 不支持 onclick 选项。

onchange 需要在 select 上。

<select id='choices' onchange="check()">
    <option id="no" value="no">No</option>
    <option value="yes">Yes</option>
</select>

【讨论】:

  • 函数是否触发 onchange?它会进入 Ajax 调用吗?你需要调试。
  • 对,我在选择上没有 onchange 这就是原因!我会试试这个谢谢你的帮助!
猜你喜欢
  • 2012-06-24
  • 1970-01-01
  • 2016-03-14
  • 2011-03-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多