Kal*_*ico 5 javascript ajax post xmlhttprequest options
我在firefox中遇到http post调用问题.我知道当有一个交叉起源时,firefox首先在POST之前执行OPTIONS以了解access-control-allow标头.使用此代码我没有任何问题:
Net.requestSpeech.prototype.post = function(url, data) {
if(this.xhr != null) {
this.xhr.open("POST", url);
this.xhr.onreadystatechange = Net.requestSpeech.eventFunction;
this.xhr.setRequestHeader("Content-Type", "application/json; charset=utf-8");
this.xhr.send(data);
}
}
Run Code Online (Sandbox Code Playgroud)
我用一个调用这个函数的简单html来测试这段代码.一切都很好,我有OPTIONS和POST的响应,我处理响应.但是,我正在尝试将此代码与使用jquery的existen应用程序集成(我不知道这是否有问题),当在这种情况下执行send(data)时,浏览器(firefox)也这样做,首先要做一个OPTION请求,但在这种情况下,不要收到服务器的响应并将此消息放入控制台:
[18:48:13.529] OPTIONS http://localhost:8111/ [undefined 31ms]
Run Code Online (Sandbox Code Playgroud)
未定义...未定义是因为没有收到响应,但代码是相同的,我不知道为什么在这种情况下选项没有收到响应,有人有想法?
我调试我的服务器应用程序和OPTIONS到服务器,但似乎浏览器不等待响应.
稍后编辑:好吧我认为问题是当我使用带有SCRIPT标签的简单html运行时调用执行请求的方法运行正常,但是在这个没有收到响应的应用程序中,我有一个表单可以执行onsubmit事件,我认为提交事件返回非常快,浏览器没有时间来获取OPTIONS请求.
稍后再编辑:WTF,我解决问题使POST请求同步:
this.xhr.open("POST", url, false);
Run Code Online (Sandbox Code Playgroud)
提交响应非常快,不能等到浏览器的OPTION响应,有什么想法吗?
归档时间: |
|
查看次数: |
773 次 |
最近记录: |