我正在使用 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";
}
});
远程调用网址如下。 JQuery 会自动将 ?callback= 添加到远程 url,因为数据类型是 jsonp,这很好。
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 有效。请让我知道我在做什么傻事。
最佳答案
我不认为你的数据类型是JSONP,它只是JSON。如果是 JSONP,您的内容类型应该是“application/javascript”,并且您的响应文本应该包装它返回的 JSON 对象,并在回调参数中提供给服务器的 javascript 函数。
(实际上,您的错误可能是 PHP 发出有关 undefined variable 的通知:araryVal ...您确定不应该是 arrayVal?:)
关于javascript - 在 Ajax 调用中解析返回数据时出现 token 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19755262/