Javascript PhoneGap-发送JSON编码数据错误
我正在使用Phonegap连接到服务器以验证用户身份。服务器希望数据是Json编码的,我将从服务器返回响应Javascript PhoneGap-发送JSON编码数据错误,javascript,jquery,ajax,json,cordova,Javascript,Jquery,Ajax,Json,Cordova,我正在使用Phonegap连接到服务器以验证用户身份。服务器希望数据是Json编码的,我将从服务器返回响应 var serviceURL = "http://appdev/PEPS-CS-Services/"; serviceURL(APPDEV)托管在我们办公室内的网络上 var loginData = { 'strUniqueID' : '123', 'UserName' : 'User123', 'Password' : 'Password123' }; 我已经
var serviceURL = "http://appdev/PEPS-CS-Services/";
serviceURL(APPDEV)托管在我们办公室内的网络上
var loginData = {
'strUniqueID' : '123',
'UserName' : 'User123',
'Password' : 'Password123'
};
我已经检查了登录凭据,它们很好。当我尝试以下方法时:
$.ajax({
type: "POST",
url: serviceURL + "services/AuthenticationServices/authenticateUser",
data: loginData,
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function(data) {
alert(data);
},
failure: function(errMsg) {
alert(errMsg);
}
});
我的控制台中出现Access Control Allow Origin
错误
XMLHttpRequest cannot load http://appdev/PEPS-CS-Services/services/AuthenticationServices/authenticateUser.
No 'Access-Control-Allow-Origin' header is present on the requested resource.
Origin 'http://localhost' is therefore not allowed access.
我四处查看了一下,有人建议我使用Jsonp
作为ajax请求中的数据类型,它确实会返回我所寻找的响应。但是,它并没有像应该的那样发出警报,控制台显示url,其中包含loginda
变量中使用的参数,如下所示
Resource interpreted as Script but transferred with MIME type application/xml:
http://appdev/PEPS-CS-Services/services/AuthenticationServices/authenticateUser?callback=jQuery164017807046906091273_1396515434941&strUniqueID=123&UserName=Mark&Password=Password1&_=1396515434963"
<ns:authenticateUserResponse xmlns:ns="http://services">
<ns:return>SESSION ID HERE</ns:return>
</ns:authenticateUserResponse>
当我在浏览器中打开链接时,会得到正确的响应,如下所示
Resource interpreted as Script but transferred with MIME type application/xml:
http://appdev/PEPS-CS-Services/services/AuthenticationServices/authenticateUser?callback=jQuery164017807046906091273_1396515434941&strUniqueID=123&UserName=Mark&Password=Password1&_=1396515434963"
<ns:authenticateUserResponse xmlns:ns="http://services">
<ns:return>SESSION ID HERE</ns:return>
</ns:authenticateUserResponse>
此处的会话ID
然而,我也得到了
Uncaught SyntaxError:Unexpected token这是一个常见的跨上下文问题,不允许您通过简单的ajax调用从另一个域请求资源并期望得到结果
相反,使用jsonp调用并注册回调函数,以便在返回结果时调用:
var success = function(data){
/* parse JSON */
data = $.parseJSON(data);
/* show json parsed data */
alert(data);
};
$.ajax({
url: serviceURL + "services/AuthenticationServices/authenticateUser",
dataType: 'jsonp', //use jsonp data type in order to perform cross domain ajax
crossDomain: true,
data: loginData,
success: success,
error: function(errMsg) {
alert(errMsg);
}
});
那么我该怎么做呢?请慷慨地接受这个答案,如果它对你的情况有帮助的话:)对不起,这个答案对我没有帮助。我必须在我调用的服务上启用CORS才能使其工作。