在JavaScript中使用AJAX进行POST,需要onreadystatechange吗?

时间:2012-09-02 11:51:45

标签: javascript ajax post onreadystatechange

编写一些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是不安全的...它可能在某些系统上有预定义的价值......任何人都知道这个吗?

谢谢你们!

3 个答案:

答案 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,而是将其遗漏,不会发生任何事情。