Javascript 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' }; 我已经

我正在使用Phonegap连接到服务器以验证用户身份。服务器希望数据是Json编码的,我将从服务器返回响应

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才能使其工作。