用POST发送json

时间:2014-05-23 17:57:11

标签: jquery json

在stackoverflow中搜索之后,我无法看到解决方案。 我有这个jquery代码:

<script>

$('input#submit').click( function() {
    $.ajax({
        url: 'http://localhost:8081/rpc/api',
        type: 'post',
        contentType: 'application/json',            
        dataType: 'json',
        data: JSON.stringify({"jsonrpc": 2.0, "method": "entidades","params": {"file": "entidades.json"}}),
        success: function(data) {
                   alert(data);
                 },
        error:function(e){
            console.log(e);
        }
    });
});

我正在尝试将数据参数中的json发送到带有服务器的文件,该服务器处理json并返回一些内容。

问题是当我从chrome或其他浏览器执行此操作时,我会在控制台中收到:

    OPTIONS http://localhost:8081/rpc/api 405 (Method Not Allowed)
XMLHttpRequest cannot load http://localhost:8081/rpc/api. Origin http://localhost is not allowed by Access-Control-Allow-Origin. 

我认为问题是因为我在本地执行jquery。 如果这是问题,怎么办?

2 个答案:

答案 0 :(得分:3)

这看起来像是跨域请求,默认情况下大多数浏览器都不允许这样做。即使只是不同的端口号也会使其成为跨域请求。 您可以将CORS视为可能的解决方案。

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

另一种解决方案是制作反向代理

答案 1 :(得分:0)

Access-Control-Allow-Origin表示您无法执行跨域调用。 https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS

解决此问题的唯一方法是在服务器中允许CORS。 我认为还有另一种解决方法,使用JSONP而不是使用$ .ajax(),但我从未使用它