我正在使用 HTML、jQuery Mobile、jQuery 和 Cordova 创建一个应用程序。我的要求是通过调用远程服务器对应用程序中的用户进行身份验证。我正在开发我的本地主机 WAMP 堆栈。
我的 jQuery 如下。
$.ajax({
type: 'POST',
url: 'http://localhost/server/',
crossDomain: true,
data:{appkey:'1234567',action:'authenticate', username: u, password :p},
dataType: 'jsonp',
async: true,
success: function (data){
console.log(data);
},
error: function (jqXHR, textStatus, errorThrown) {
alert("Invalid Username or Password");
window.location = "index.html";
}
});
远程调用网址如下。由于数据类型是 jsonp,JQuery 会自动将 ?callback= 添加到远程 url,这很好。
localhost/server/?callback=jQuery18306688079617451876_1383495199431…4567&action=authenticate&username=fdf&password=fdfdf&_=1383495208981
来自远程 url 的响应在 Chrome 开发者控制台中如下所示。
{"success":"false"}
在服务器的 PHP 部分,我使用以下代码返回 json 对象。
header('Content-type: application/json');
echo json_encode($araryVal);
在我看来,一切都很完美,但我的代码断点从未到达 ajax 调用的成功部分。它总是在错误部分爆发。
在开发人员控制台中,我看到了错误消息。
Uncaught SyntaxError: Unexpected token :
JsonLint 说 json 是有效的。请让我知道我在做什么傻。