使用PHP json_encode解析错误

时间:2016-11-09 16:39:04

标签: php json

我收到一个奇怪的错误,我不确定为什么会这样。我正在尝试向我的ajax调用发送多个值,这会产生undefined

我尝试调试它,我意识到我的PHP正在使用json_encode解析错误。原因似乎是多个值的传递。任何人都能解释为什么会这样吗?

<?php
ini_set('display_errors', 1);
error_reporting(E_ALL);

$files = glob("images/*.*");

for ($i=0; $i<count($files); $i++) {
    $image = $files[$i];
}

echo json_encode("array_of_images" => $files, "size_of_array" => sizeof($files));
?>

更新:Ajax代码

<script>
    $.ajax({    //create an ajax request to load_page.php
        type: "GET",
        url: "img.php",             
        dataType: "html",   //expect html to be returned                
        success: function(response){     
            alert(response.array_of_images);
            alert(response.size_of_array);
        },
        error:function (xhr, ajaxOptions, thrownError){
           // alert(thrownError);
        }
    });
</script>

3 个答案:

答案 0 :(得分:4)

传递给json_encode的第二个值应该是选项,而不是更多数据。您需要将参数设置为数组,而不是将其作为2个值传递:

 echo json_encode(array("array_of_images" => $files, "size_of_array" => sizeof($files)));

答案 1 :(得分:2)

添加标头和json_encode接收作为参数的数组,所以它就像这样:

header('Content-Type: application/json');
echo json_encode(["array_of_images" => $files, "size_of_array" => sizeof($files)]);

答案 2 :(得分:2)

json_encode接受数组。所以你必须像

一样写
echo json_encode(array("array_of_images" => $files, "size_of_array" => sizeof($files)));