【发布时间】:2013-06-04 01:54:43
【问题描述】:
我的ajax代码是
$.ajax({
type: 'GET',
dataType: "jsonp",
processData: false,
crossDomain: true,
jsonp: false,
url: "http://someotherdomain.com/service.svc",
success: function (responseData, textStatus, jqXHR) {
console.log("in");
},
error: function (responseData, textStatus, errorThrown) {
alert('POST failed.');
}
});
这是一个跨域ajax请求。
我得到了对该请求的正确响应,在使用 firebug 检查时我可以看到该响应。
这是我在萤火虫响应和通过网络浏览器访问此网址时得到的响应
{"AuthenticateUserResult":"{\"PKPersonId\":1234,\"Salutation\":null,\"FirstName\":\"Miqdad\",\"LastName\":\"Kumar\",\"Designation\":null,\"Profile\":\"\",\"PhotoPath\":\"\/UploadFiles\/\"}"}
但是我遇到了错误
SyntaxError: invalid label
{"AuthenticateUserResult":"{\"PKPersonId\":8970,\"Salutation\
我是否需要使用任何其他方法才能使其正常工作。我想在 phonegap+jquery 移动应用中实现这个。
另外,我没有任何访问网络服务的权限
如果我禁用 chrome 网络安全,它可以正常工作
【问题讨论】:
-
使用这三个选项是否有任何理由,或者您是否只是将它们插入以查看它们是否有效:
processData:false,crossDomain:true,jsonp: false,processData不需要,因为#1您没有发送任何数据,而#2 对 jsonp 请求没有任何意义。crossDomain:true几乎从不需要,唯一的情况是,如果您想执行同源请求,同时将其视为跨域请求。由于您正在发出跨域请求,因此默认情况下它已经是真实的。jsonp:false不应该在没有jsonpCallback:"callback"的情况下使用。 -
不...这是我为测试添加的。这个跨域请求就是我使用这些代码的原因;)
-
查看更新的评论,抱歉。这三个选项对您提出的请求没有任何意义。
-
如果有的话,你需要发出一个 CORS 请求,但这只有在 web 服务支持 CORS 时才会起作用,而且鉴于提供的内容,我们无法判断它是否确实如此。
-
首先,删除这三个选项并再次尝试请求。你成功了吗? (错误回调可以去掉,jsonp请求不会触发)
标签: jquery ajax json jquery-mobile cordova