0

我最近开始学习 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 on a button 触发)时,POST 不起作用,服务器似乎没有收到任何东西。

但最令人惊讶的是,如果我在 req.open() 处保留一个断点,然后手动执行步骤,那么它总是可以工作。这意味着,我想有一些时间问题需要解决。

如果第三个参数“async”设置为false,它可以在没有断点的情况下正常工作,但这无论如何都是不可取的,所以我想让它与async = true一起工作。

任何帮助将不胜感激。

谢谢希亚姆

4

1 回答 1

0

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

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

于 2012-10-27T19:39:11.943 回答