不使用任何框架的跨域POST请求

时间:2012-06-20 09:15:15

标签: javascript ajax cross-domain

我想在js中使用脚本hackup进行跨域请求,而不使用任何框架,如jquery。我想将json发布到跨域服务并使用回调检索结果。是否可以在普通的javascript中使用?

3 个答案:

答案 0 :(得分:0)

框架可以做到,所以你可以这样做。其他人编写的代码不能做你写的代码所不能做的事情(只要你愿意学习所需的一切)。

如果您想向其他来源发布帖子请求(假设您没有通过自己的服务器代理请求),则必须使用CORS(但请注意browser support

(无论如何,对于“普通JavaScript”的某些值,您需要由不属于核心语言的浏览器提供的API。)

答案 1 :(得分:0)

你可以使用这样的东西。

var url = "http://sitename.com";
var params = "params1=value&params2=value2";
var httpc = new XMLHttpRequest();
httpc.open("POST", url, true);
httpc.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
httpc.onreadystatechange = function() {
    if(httpc.readyState == 4 && httpc.status == 200) {
            var responseType = httpc.getAllResponseHeaders();
            if(responseType.indexOf("application/json") != -1) {
                alert(httpc.responseText);
            }
    }
}
httpc.send(params);

答案 2 :(得分:0)

我今天一直在研究同样的问题,我遇到过一些关于CORS的精彩教程。

http://www.html5rocks.com/en/tutorials/cors/

http://websitez.com/javascript-cross-domain-post-get/

基本上,当javascript即将发送XMLHttpRequest请求时(我们假设此示例为POST),跨域首先发送一个OPTIONS请求,其中包含要在POST请求中发送的方法和标头。远程域应使用适当的标头响应告诉您的客户它将接受您的请求。这称为“预检”请求。请记住,在POST请求中需要返回相同的响应标头,否则您将获得200响应代码,但您的代码会将其视为错误。