1

我正在尝试将 json 对象发送到 servlet 。

但它显示如下错误: XMLHttpRequest cannot load http://192.168.10.113:8080/collective-intellegence/SaveFeedback。Origin http://192.168.9.185 是 Access-Control-Allow-Origin 不允许的

我的代码

var feedbackData = [];

        for (j in storeData.collection) {
            var fromData="abc";
            feedbackData.push({
                "queryid": queryId,
                "from": fromData,
                "to": GetUserDetails(storeData.item(j)),
                "isresolved": document.getElementById(("chk" + j)).checked
            });
        }
$.ajax({
                type: 'POST',
                url: saveDataURL,
                data: "{ 'feedback': '" + feedbackData + "' }",
                dataType: 'json',
                success: function (data) {
                    alert('Success');
                },
                error: function () {
                    alert('Error');
                }
            });

这显示错误

我用谷歌搜索,发现我们无法将 json 对象传递给跨域。

所以我决定创建一个可以传递给跨域的 jsonp 对象。

请帮助解决问题

提前致谢

4

2 回答 2

0

您必须将数据类型更改为JSONP

function hello(data){ // my call back function
            console.log(data);
        }

        $(function(){
            //It's not actually working, but htis code should work well
            //Let's say that you put your docStats in an object
            //like docStats = data.response.clickStats.docStats

            $.ajax({
                url:'http://example.com',
                type : 'POST' ,
                dataType: 'jsonp',
                data : {
                    fq: 'param1',
                    wt: 'param2',
                    "json.wrf" : 'hello' // how i call my callback function

                }
            });

        })
于 2012-12-06T07:28:35.080 回答
0

您应该阅读 JSONP 的工作原理:http ://en.wikipedia.org/wiki/JSONP

由于 JSONP 通过创建标签来工作,因此您只能将 JSONP 与 GET HTTP 方法一起使用,而不是 POST。您使用 JSONP发送的所有数据都在 URL 查询参数中发送(因为 GET 请求没有正文)。

我认为您应该检查 CORS 并检查它是否是解决跨域问题的好方法:http ://en.wikipedia.org/wiki/Cross-origin_resource_sharing

于 2012-12-06T18:34:31.337 回答