2012-10-27 29 views
0

我最近开始学习AJAX,并且正在尝试一个非常简单的项目,它涉及捕获一些表单数据并将其发送到两个服务器。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

您确定自己没有违反Cross Domain政策吗? – Jay

回答

0

当我想通了,表单页面渐渐由被调用的形式B中的第一台服务器的作用PHP脚本卸载。这导致javascript代码部分执行或未执行。

所以我想出了同步XHR是我的唯一途径。