2016-11-09 9 views
1

私は奇妙なエラーが発生しており、なぜそれが起こっているのか分かりません。私はundefinedという結果になっている私のajax呼び出しに複数の値を送信しようとしています。PHPの解析エラーjson_encode

私はそれをデバッグしようとしましたが、私の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> 

答えて

4

json_encodeに渡される第二の値すべきオプションであり、それ以上のデータではありません。あなたは、2つの値として渡すのではなく、配列の中にあなたのパラメータを行う必要があります。

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

おかげのようにそれを記述する必要がありますが、なぜ私はまだ、次のAJAX応答に未定義を得るのです: 成功:機能(応答){ \t警告(response.array_of_images)。 \tアラート(response.size_of_array); \t}、 – nTuply

+0

警告が出る前に 'console.log(response)'を試してみてください。 – aynber

+0

console.logでも未定義です。 'json_encode($ files)'と言うだけであれば動作します。 – nTuply

2

追加ヘッダとjson_encodeは、パラメータとして受信アレイ:

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

json_encodeは配列を受け入れます。だから、

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