0

我想在不使用任何框架(如 jquery)的情况下使用 js 中的脚本 hackup 来发出跨域请求。我想将 json 发布到跨域服务并使用回调检索结果。可以用普通的javascript吗?

4

3 回答 3

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);
于 2012-06-20T09:26:10.883 回答
0

框架做到了,所以你可以做到。别人写的代码不能做你写的代码不能做的事情(只要你愿意学习所有需要的东西)。

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

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

于 2012-06-20T09:18:51.197 回答
0

我今天一直在解决同样的问题,并且遇到了一些关于 CORS 的很棒的教程。

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

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

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

于 2012-06-20T19:01:40.480 回答