我最近开始学习AJAX,我正在尝试一个非常简单的项目,它涉及捕获一些表单数据并将其发送到两台服务器。
第一台服务器是托管网站和服务器端php处理的服务器。这很好看
第二个服务器是一个python基本的http服务器,它只处理从AJAX发送的POST操作请求。这个功能有效,但有点奇怪。
让我解释一下
这是我的AJAX代码,绝对是直截了当的。
function xml_http_post(url, data) {
var req = false;
try {
// Firefox, Opera 8.0+, Safari
req = new XMLHttpRequest();
}
catch (e) {
// Internet Explorer
try {
req = new ActiveXObject("Msxml2.XMLHTTP");
}
catch (e) {
try {
req = new ActiveXObject("Microsoft.XMLHTTP");
}
catch (e) {
alert("Your browser does not support AJAX!");
return false;
}
}
}
req.onreadystatechange = function() {
if (req.readyState == 4) {
// callback(req);
}
}
req.open("POST", url, true);
req.setRequestHeader("Content-type","text/plain");
req.send(data);
}
由于我不打算发回任何响应,因此准备状态更改时的回调函数为空。
但是当我执行这段代码时(由按钮上的onclick触发),POST不起作用,服务器似乎没有收到任何东西。
但最令人惊讶的是,如果我在req.open()中保留断点然后执行手动步骤,那么它始终有效。这意味着,我想有一些时间问题需要解决。
如果第三个参数“async”设置为false,但是无论如何都是不受欢迎的,那么它在没有断点的情况下工作正常,所以我想让它与async = true一起工作。
非常感谢任何帮助。
由于 希亚姆
答案 0 :(得分:0)
正如我所知,表单页面被一个php脚本卸载,该脚本被调用为第一个服务器的表单b的动作。这导致javascript代码被部分或不执行。
所以我发现同步XHR是我的唯一方法。