将POST格式化为2个URL

时间:2013-05-17 18:50:40

标签: php http html-form

我需要将单个表单发布到2个不同的URL。一个是日志记录脚本,因此不需要将响应传递回用户。

不幸的是,在这个例子中,我不能只发布到一个PHP脚本并转向并使用Curl重新发布它。这必须在用户的浏览器中完成。

这是我现在正在使用的一些Javascript,但是对于几乎所有主流浏览器而言,它看似随机的速度都失败了(但是在95%以上的时间里工作)。表单的其余部分确实需要Javascript才能运行,所以我知道问题不仅仅是某些用户关闭了Javascript。

  function makePOSTRequest(url, parameters) {

  http_request = false;

  if (window.XMLHttpRequest) { // Mozilla, Safari,...

     http_request = new XMLHttpRequest();

     if (http_request.overrideMimeType) {

        http_request.overrideMimeType('text/html');
     }
  } else if (window.ActiveXObject) { // IE
     try {
        http_request = new ActiveXObject("Msxml2.XMLHTTP");
     } catch (e) {
        try {
           http_request = new ActiveXObject("Microsoft.XMLHTTP");
        } catch (e) {}
     }
  }
  if (!http_request) {
     alert('Cannot create XMLHTTP instance');
     return false;
  }

  http_request.open('POST', url, true);
  http_request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
  http_request.setRequestHeader("Content-length", parameters.length);
  http_request.setRequestHeader("Connection", "close");
  http_request.send(parameters);

}

我在另一个函数中手动构建请求后调用,然后调用表单的submit()函数。

有人可以提出一个可能更好的替代方案吗?这似乎在95%的时间内起作用,但5%的失败率是一个杀手......谢谢!

1 个答案:

答案 0 :(得分:0)

尝试使用支持错误检查的框架,尝试在失败时重复请求。

jQuery之类的JavaScript框架支持发送帖子请求,可用于检查请求是否成功。此外,您的代码将更易于编写和维护。