AJAX新手,在服务器上发布数据

时间:2012-10-27 05:58:15

标签: ajax http

我最近开始学习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一起工作。

非常感谢任何帮助。

由于 希亚姆

1 个答案:

答案 0 :(得分:0)

正如我所知,表单页面被一个php脚本卸载,该脚本被调用为第一个服务器的表单b的动作。这导致javascript代码被部分或不执行。

所以我发现同步XHR是我的唯一方法。