在javascript中动态创建jsonp对象(将json对象发送到跨域)
我正在尝试向servlet发送一个json对象 但它显示的错误如下: XMLHttpRequest无法加载http://192.168.10.113:8080/collective intellegence/SaveFeedback。访问控制不允许源代码http://192.168.9.185允许源代码允许源代码 我的代码在javascript中动态创建jsonp对象(将json对象发送到跨域),json,jquery,cross-domain,jsonp,Json,Jquery,Cross Domain,Jsonp,我正在尝试向servlet发送一个json对象 但它显示的错误如下: XMLHttpRequest无法加载http://192.168.10.113:8080/collective intellegence/SaveFeedback。访问控制不允许源代码http://192.168.9.185允许源代码允许源代码 我的代码 var feedbackData = []; for (j in storeData.collection) { var fromD
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对象,我可以将它传递到跨域
请帮忙解决这个问题
提前感谢您必须将数据类型更改为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
}
});
})
您应该了解JSONP的工作原理: 由于JSONP是通过创建标记来工作的,所以您只能使用带有GET HTTP方法的JSONP,而不能使用POST方法。使用JSONP发送的所有数据都在URL查询参数中发送(因为GET请求没有正文)
我认为您应该检查CORS,并检查它是否是解决跨源问题的好方法:如果我使用jsonp,那么servlet不起作用,因为bcz只使用json格式,如果我在数据类型中使用json,它会显示我提到的错误。我必须发送一个json对象,而不是jsonp对象