编写一些JavaScript以将POST(而不是GET)发送回Web服务器时,我想知道是否需要定义XMLHttp.onreadystatechange?到目前为止我的代码看起来像这样:
XMLHttp.onreadystatechange = function(){};
XMLHttp.open("POST", "http://something.com/receiver.php", true);
XMLHttp.setRequestHeader("Content-type", "text/plain");
XMLHttp.send("blabla");
因为POST成功后我不需要做任何事情,因此不需要触发任何功能。
问题1: 我想让代码尽可能短,我想到设置onreadystatechange = null,任何人都知道这是否可行(在所有浏览器中)?
问题2: 我想将onreadystatechange完全保留为undefined是不安全的...它可能在某些系统上有预定义的价值......任何人都知道这个吗?
谢谢你们!
答案 0 :(得分:0)
您需要知道请求是否已完成。只有在那之后你才应该轮询XHR状态。
因为请求可能会在中间失败(特别是如果它无法到达目的地,你就不会知道。如果它超时,则表示失败)。
除非您的原始计划只是发送请求而忘记它。在这种情况下,您不需要onreadystatechange
。
编辑:或者您可以使用false
作为其异步属性。然后XMLHttpRequest.send()
将不会返回,直到您获得状态。
参考:https://developer.mozilla.org/en-US/docs/DOM/XMLHttpRequest/Using_XMLHttpRequest
答案 1 :(得分:0)
我知道它不是你问的,但由于你只需要发送一个帖子请求并忽略结果,我建议使用一个非常方便的jQuery函数。它会为您处理所有XMLHTTP事项:
$.post("test.php", { name: "John", time: "2pm" } );
包含您要发送的网址和数据。
以下是进一步的参考:http://api.jquery.com/jQuery.post/
如果您要发布其他域名,只需在请求中启用jsonp。
答案 2 :(得分:0)
实际上,不是将onreadystatechange
设置为null,而是将其遗漏,不会发生任何事情。