gpt4 book ai didi

php - Ajax 为 IE 报告 '1'

转载 作者:可可西里 更新时间:2023-11-01 01:06:07 24 4
gpt4 key购买 nike

我正在尝试为拒绝将除 IE 以外的任何内容下载到他们的机器上的 parent 创建一个功能页面。无论如何,它是一个列表,我只想要一些由数据库支持的 AJAX 可切换按钮。

我不确定发生了什么,但下面的代码在 Firefox 和 Chrome 中都被调用并收到了很好的效果。无论我在 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();

关于php - Ajax 为 IE 报告 '1',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10587166/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com