微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

PHP-Ajax报告IE的值为“ 1”

我正在尝试为拒绝将IE以外的内容下载到其计算机上的父母创建一个功能页.无论如何,它是一个列表,我只想要一些由数据库备份的AJAX可切换按钮.

我不确定发生了什么,但是以下内容在Firefox和amp;铬.不管我在IE(任何版本)中做什么,都无法正常工作. onreadystatechange函数始终接收并报告“ 1”,而不是应有的“ off”或“ on”.这最初使我心烦意乱,因为我只是想发送1和0.

不管怎样,IE实际上并没有提交任何值,所以我想尝试进入PHP页面并收到响应的过程中出现了问题.很抱歉成为n00b,但这是什么引起的呢?

不幸的是,网页上有一些我不希望别人看到的敏感信息,因此,下面的传感代码如下:

JAVASCRIPT功能

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

    alert("toggling responded for element: " + i);

    respondedHttp.onreadystatechange = function() {         
        if(respondedHttp.readyState==4 && respondedHttp.status==200) {
            var state = respondedHttp.responseText;
            alert("Recieved: " + state);
            if(state == "off") {
                document.getElementById("respond"+i).className = "inLineOff";
                document.getElementById("respond"+i).innerHTML = "No Response Yet";
                document.getElementById("attend"+i).style.display="none";
                document.getElementById("quantityCell"+i).style.display="none";
            } else if(state == "on") {
                document.getElementById("respond"+i).className = "inLineOn";
                document.getElementById("respond"+i).innerHTML = "Responded";
                document.getElementById("attend"+i).style.display="inline";
                if(document.getElementById("attend"+i).innerHTML == "Attending") {
                    document.getElementById("quantityCell"+i).style.display="table-cell";
                }
            } else {
                alert("error: " + state);
            }
        }
    }

    var name = peeps.people[i];

    alert("toggling for: " + name); 
    alert("toggling as: " + encodeURIComponent(name));

    var ops = "./quer.PHP?";    
    ops += "op=toggleResponded";
    ops += "&name=" + encodeURIComponent(name);

    alert("going to: " + ops);

    respondedHttp.open("GET", ops, true);
    respondedHttp.send();
}

PHP

if(isset($_GET["op"])) {
    switch($_GET["op"]) {
        case "toggleResponded":
            $name = MysqL_real_escape_string(rawurldecode($_GET["name"]));
            $database->executeStatement("SELECT * FROM table WHERE nameField='$name'");
            $info = $database->nextResult();
            $nval = 0;
            if($info["Responded"] == 0) {
                $nval = 1;
            }
            $database->executeStatement("UPDATE table SET field='$nval' WHERE nameField='$name'");
            if($nval == 1) {
                echo "on";
            } else {
                echo "off";
            }           
        break;

解决方法:

IE积极地缓存ajax,由于您最初返回1和0,所以它可能只是缓存的数据.将当前日期添加到您请求的URL.

var d = new Date();
ops = ops + '&nocache=' + d.getTime();

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐