我有这段代码
$(document).delegate('#login', 'pageinit', function(event) {
console.log('inside login page')
$('#loginform').submit(function() {
// Get the value of the username and password
var myusername = $("#username").val();
var mypassword = $("#password").val();
// Post to the login route
$.post(global_urlstub + '/customer_login', {username: myusername, password: mypassword}, function(data) {
alert(data);
console.log(data);
if (data.flag == true) {
alert('123');
console.log(data);
jQuery.mobile.changePage('#page1');
}
else {
alert('12345');
console.log(data);
$('#errmsg_login').html(data.msg);
}
}, "json" );
return false;
});
});
我的服务器使用密钥flag
返回哈希值。但是,此代码不会向控制台或警报返回任何数据,而发布请求成功。我做错了什么?
答案 0 :(得分:3)
当服务器未返回有效的JSON
时会发生这种情况首先尝试没有数据类型,如下所示..
$.post(global_urlstub + '/customer_login', {username: myusername, password: mypassword}, function(data) {
alert(data);
console.log(data);
if (data.flag == true) {
alert('123');
console.log(data);
jQuery.mobile.changePage('#page1');
}
else {
alert('12345');
console.log(data);
$('#errmsg_login').html(data.msg);
}
});
答案 1 :(得分:3)
我同意Hemant_Negi的说法,这是服务器没有返回有效JSON的问题。以下基于您的代码工作正常(更改URL也返回有效的JSON):
var myusername = 'a', mypassword = 'b';
$.post('http://ip.jsontest.com', {username: myusername, password: mypassword}, function(data) {
alert(data.ip);
console.log(data);
if (data.flag == true) {
alert('123');
console.log(data);
jQuery.mobile.changePage('#page1');
}
else {
alert('12345');
console.log(data);
$('#errmsg_login').html(data.msg);
}
}, "json" ).fail( function(jqXHR, textStatus, errorThrown) {
alert(textStatus);
});
如果更改该URL,则对fail()的调用应警告错误消息。
答案 2 :(得分:0)
确保在服务器端脚本中使用任何调试输出代码。
此外,使用Firebug或chrome工具,您可以轻松检出服务器的响应,看它是否采用有效的JSON格式。