0

在编写一些 JavaScript 以将 POST(而不是 GET)发送回网络服务器时,我想知道您是否需要定义 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 是不安全的……它可能在某些系统上具有预定义的值……有人知道吗?

多谢你们!

4

3 回答 3

1

实际上,onreadystatechange您可以不设置为 null 而不是将其设置为空,这样什么都不会发生。

于 2012-09-02T12:18:01.233 回答
0

您需要它知道请求是否完成。只有在那之后,您才应该轮询 XHR 状态。

因为请求可能会在中间失败(特别是如果它未能到达目的地,你不会知道。如果它超时,那么它就是失败)。

除非您最初的计划是发送请求而忘记它。在这种情况下,您不需要onreadystatechange.

编辑:或者你可以使用false它的 async 属性。然后XMLHttpRequest.send()在您获得状态之前不会返回。

参考:https ://developer.mozilla.org/en-US/docs/DOM/XMLHttpRequest/Using_XMLHttpRequest

于 2012-09-02T11:56:36.477 回答
0

我知道这不是你问的,但由于你只需要发送一个发布请求并忽略结果,我建议使用一个非常方便的 jQuery 函数。它会为您处理所有 XMLHTTP 事务:

$.post("test.php", { name: "John", time: "2pm" } );

由您发送的 url 和数据组成。

这是进一步的参考:http: //api.jquery.com/jQuery.post/

如果您的帖子是另一个域,只需在请求中启用 jsonp。

于 2012-09-02T12:11:21.513 回答