我有一个由AJAX返回的JSON数据:
PHP文件:
//SQL: fetch result if user exist
$result = array("Name"=>$name, "ID"=>$id, "Age"=>$age, "School"=>$school, "Department"=>$dept);
echo json_encode($result);
//else return error
$error = 'No record for this user.';
$result = array("Error"=>$error);
echo json_encode($result);
jQuery AJAX:
//AJAX result
request.done(function( msg ):
//alert( msg ); working fine for users who exist and even those who doesn't exist.
var detail = jQuery.parseJSON( msg );
if ( detail.Name.length > 0 ){
$('.student').slideDown(300);
$('.student').html(detail.Name);
// this is working fine
}
if ( detail.Error.length > 0 ){
$('.student').slideDown(300);
$('.student').html(detail.Error);
//this is not working even if the user does not exist.
}
我如何解决这个问题?
答案 0 :(得分:2)
在您检查detail.Name.length时,您的脚本将失败。该错误将阻止Javascript执行其余的操作。
如果出现错误,您的JSON数据将如下所示:
{"Error":"No record for this user."}
如果您随后运行JavaScript代码:
if(detail.Name.length>0)
... Javascript将返回“Uncaught TypeError:无法读取未定义的属性'长度...”并且它将停止执行所有其他JavaScript代码,因此它永远不会到达您的错误处理程序。
要解决此问题,请在知道记录存在之前不要检查记录的长度:
if(typeof detail.Name!="undefined" && detail.Name.length>0){
... etc...
在这种情况下,您甚至不必检查lenth,如果设置了“name”,您知道它是由PHP脚本设置的......