ajax post 不起作用,Ajax POST请求在Internet Explorer中不起作用

我正在构建一个PHP脚本,用于在其生日中向人们发送电子邮件。我还需要一个小型的网络界面,我可以打开或关闭整个程序,观察今天谁在庆祝他的生日,看看是否有邮件无法发送。服务器上的PHP正在工作,但我正在努力与HTML和JavaScript界面​​。特别是从服务器获取信息的Ajax请求。它在firefox,chrome和opera中工作正常,但在Internet Explorer 8中,我没有得到服务器的响应。 readyState切换到4,但状态保持为0并且responseText为空。Ajax POST请求在Internet Explorer中不起作用

谷歌搜索后,我发现了很多人的意见JQuery的,但我不能让那个在任何浏览器中运行。我想了解更多,因为它看起来很容易,但现在我想知道如何在没有JQuery的情况下做到这一点。

编辑

在回答评论的问题,切换if和else语句产生相同的结果。顺便说一下,这个连接从“开放”改为“关闭”也是如此,但我不记得为什么我改变了它,可能只是因为挫折而尝试。最后我添加了服务器端的php代码。如果'action'是switchonoff,服务器将发回字符串数据,或者如果action为clearlog,则只有一个没有文本的头部,如果操作初始化,则为jsonarray。无论请求的服务器的HTTP状态始终为0。

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');

}

编辑,这里的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 . "
";

}

$errorLogArray = $settings->getErrorLog();

$errors = "";

foreach($errorLogArray as $line) {

$errors .= $line . "
";

}

$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");

}

?>

2012-06-19

M.Smit

+1

请也显示一些PHP代码(处理发送参数的部分),它可能有问题。 –

+0

你试过切换'if'和'else'语句吗?这是正常的做法,即'if(window.ActiveXObject){..' –

+0

顺便说一句,为什么'Connection'标题设置为'open',并且'close'? –

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值