【发布时间】:2015-03-26 14:13:30
【问题描述】:
当我使用已定义的键从 php 发送 json_encode 时,Chrome 控制台显示错误,但在我未定义键时有效:
“未捕获的语法错误:意外的令牌:”
此 PHP ajax_return_array.php 代码有效:
$array = array("a","b","c","d");
echo json_encode( $array );
此 PHP ajax_return_array.php 代码失败:
$array = array(1=>"a",2=>"b",3=>"c",4=>"d");
echo json_encode( $array );
jquery ajax:
$.ajax({
type: "POST",
url: "ajax_return_array.php",
success: function(result) {
if(result) {
resultObj = eval (result);
alert( resultObj );
} else {
alert("error");
}
}
});
这是导致错误的 json 数据: {"1":"a","2":"b","3":"c","4":"d"}
【问题讨论】:
-
显示
jax_return_array.php的 ajax 您发布的是ajax_return_array.php -
你的 json 数据是有效的......为什么你使用
eval?? -
eval 只是输出到警告对话框。
-
eval()是邪恶的。使用更安全的JSON.parse()。 -
或设置
dataType: 'json'。如果您的 json 确实无效,那将导致脚本转到 ajax 错误处理程序。