gpt4 book ai didi

javascript - Ajax POST 请求在 Internet Explorer 中不起作用

转载 作者:行者123 更新时间:2023-11-30 06:41:15 25 4
gpt4 key购买 nike

我正在构建一个 PHP 脚本,用于在人们生日时向他们发送电子邮件。我还需要一个小的 Web 界面,我可以在其中打开或关闭整个程序,查看今天谁在庆祝他的生日,看看是否有任何邮件无法发送。服务器上的 php 正在运行,但我正在努力处理 html 和 javascript 界面。特别是从服务器获取信息的 Ajax 请求。它在 firefox、chrome 和 opera 中运行良好,但在 Internet Explorer 8 中我没有得到服务器的响应。 readyState 切换为 4,但状态仍为 0,responseText 为空。

谷歌搜索后,我发现很多人建议使用 JQuery,但我无法在任何浏览器中使用它。我想了解更多关于它的信息,因为它看起来很简单,但现在我想知道如何在没有 JQuery 的情况下做到这一点。

编辑

针对评论中的问题,切换 if 和 else 语句会产生相同的结果。就像将连接从“打开”更改为“关闭”一样,顺便说一句,它应该是关闭的,我不记得为什么要更改它,可能只是出于沮丧而尝试一些事情。最后我添加了服务器端的 php 代码。服务器在“action”为 switchonoff 的情况下发回字符串数据,或者,如果 action 是 clearlog,则返回一个没有文本的 header ,如果 action 已初始化,则返回一个 jsonarray。无论请求是什么,服务器的 HTTP 状态始终为 0。

<script type="text/javascript">
function loadXMLDoc(action) {
var parameters = "action="+encodeURI(action);
var xmlhttp;
if (window.XMLHttpRequest) { // code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else {// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.open("POST",'http://mailer.test/App/postscript.php',true);
xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xmlhttp.setRequestHeader("Content-length", parameters.length);
xmlhttp.setRequestHeader("Connection", "open");
xmlhttp.send(parameters);

xmlhttp.onreadystatechange=function() {
if (xmlhttp.readyState == 4 && xmlhttp.status==200) {
if(action == 'switchonoff'){
document.getElementById("onoffbutton").innerHTML=xmlhttp.responseText;
} else if(action == 'initialize'){
var response = JSON.parse(xmlhttp.responseText);
document.getElementById("onoffbutton").innerHTML=response['onoff'];
document.getElementById("birthdays").innerHTML=response['birthdays'];
document.getElementById("errors").innerHTML=response['errors'];
} else if(action == 'clearlog'){
document.getElementById("errors").innerHTML="";
}
}
}
}

window.onload = function() {
loadXMLDoc('initialize');
}
</script>

编辑,这里是 php 脚本

<?php 

include "settingschanger.php";
include "customercsv.php";

if (!isset($_POST['action'])) {
$_POST['action'] = 'dummy';
}

$post = $_POST['action'];

if(strcmp($post, "initialize") == 0) {
$settings = new SettingsChanger();
$onoff = $settings->getOnOff();
$csv = new CustomerCSV();
$csv->openFile((__DIR__).CustomerCSV::FILENAME);
$todaysbirthdays = $csv->getTodaysBirthdays();
$birthdays = "";
foreach ($todaysbirthdays as $row) {
$birthday = "";
foreach ($row as $data) {
$birthday .= $data . " ";
}
$birthdays .= $birthday . "<br />";
}
$errorLogArray = $settings->getErrorLog();
$errors = "";
foreach($errorLogArray as $line) {
$errors .= $line . "<br />";
}
$result = json_encode(array('onoff'=>$onoff, 'birthdays'=>$birthdays, 'errors'=>$errors));

header("HTTP/1.1 200 OK");
print $result;
}
if(strcmp($post, "switchonoff") == 0) {
$settings = new SettingsChanger();
$result = $settings->changeOnOff();

header("HTTP/1.1 200 OK");
print $result;
}
if(strcmp($post, "clearlog") == 0) {
$settings = new SettingsChanger();
$settings->clearLog();

header("HTTP/1.1 200 OK");
}
?>

最佳答案

xmlhttp.onreadystatechange 语句之后尝试使用 xmlhttp.send(parameters);

关于javascript - Ajax POST 请求在 Internet Explorer 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11101025/

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