【问题标题】:Ajax json_encode error: "Uncaught SyntaxError: Unexpected token :" when returning array with keysAjax json_encode 错误:“Uncaught SyntaxError: Unexpected token :”返回带有键的数组时
【发布时间】: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 错误处理程序。

标签: php jquery ajax


【解决方案1】:

jQuery 的 ajax 函数应该自动将响应解析为一个对象。只需删除您的 eval 语句并将响应分配给您的 resultObj。此外,由于您没有发布任何内容,因此它可能应该是默认的“GET”。 (不要忘记更改您的 php 代码)。

$.ajax({
    url: "ajax_return_array.php",
    success: function(result) {
        if(result) {
            resultObj = result;
            alert( resultObj );
        } else {
            alert("error");
        }
    }
});

【讨论】:

    猜你喜欢
    • 2016-10-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-21
    • 2016-08-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多