我正在使用带有 JSONP 的JQuery ajax帖子作为数据类型来解决 CrossDomain 的问题 这是我的代码实现:
$.ajax({
statusCode: {
200: function() {
alert("page found");
},
302: function() {
alert("page redirect");
}
},
url: "http://exemple.com/j_spring_security_check",
type: "post",
dataType: 'jsonp',
jsonp: false,
jsonpCallback: 'localJsonpCallback',
contentType: 'application/json; charset=utf-8',
data: {ajax: true, username: 'user1', password: 'pass'},
success: function(){
alert("success");
},
error:function(jqxhr, textStatus, error){
alert("textStatus : " + textStatus + "\n error" + error);
}
});
function localJsonpCallback(data) {
alert("localJsonpCallback : " + data);
}
问题是我收到此消息的错误:
errorParsing,未调用localJsonpCallback回调。
我知道为什么我会收到这样的消息,因为客户正在参加这样的格式:
localJsonpCallback({ “成功”:1});
但是我得到了这样的结果:{“成功”:1}
问题是回调方法没有在服务器中实现,因为这些人知道如何使用spring security来覆盖这个方法。这就是它没有被召唤的原因。 而且我无法访问服务器。
如果没有在服务器中实现回调函数,有没有办法获得JSONP响应?
PS:我必须使用JSONP来避免这种错误 access-control-allow-origin not allowed
答案 0 :(得分:0)
我在服务器端解决了这个问题,所以当我调用Web服务时,我添加了一个属性,其中包含我想要捕获的回调函数的名称。并且Web服务必须返回类似FUNCTION_NAME({JSON_STRUCTURE})
的响应。
所以正如我在问题中提到的,当你提出请求时。放置一个属性以供WebService识别并将其作为响应返回。 例如,如果我想获取联系人列表,我喜欢这样:
http://example.com/getContacts?callbackName=getcontactsCallback
响应必须如下:getcontactsCallback({name:john , job:developer})
并且必须在此属性中为Ajax请求指示相同的回调名称:
jsonpCallback: 'localJsonpCallback',