2

AJAX呼び出しからJSONオブジェクトを取得し、次のように結果をログに記録しています。

console.log(response);

そして、これはコンソールに記録された応答です。

{"filename":"new.jpg","orientation":"vertical"}

しかし、私が

console.log(response.orientation);

未定義であるという応答があります。

私が読んだ回答のほとんどは、オブジェクトの代わりに配列が返され、response [0] .orientationが機能するはずであることを示していますが、ここではそうではありません。コンソールで同じ配列を別の変数に割り当てると、次のようになります。

var obj = {"filename":"new.jpg","orientation":"vertical"}

次に、obj.orientationは正しい値を返します。

PHPでJSONオブジェクトを作成しています:

$response=array('filename' => $newfilename, 'orientation' => $orientation);
$response=json_encode($response);
echo $response;

プロパティが未定義で表示されている理由は明らかですか?

4

4 に答える 4

6

どちらかを置く:

header("Content-type: application/jason");

PHPではdataType: "json"、JavaScriptのAJAX呼び出しで指定するか、を呼び出しますJSON.parse

于 2012-08-31T13:00:57.833 に答える
2

適切なJSONオブジェクトを取得するには、文字列を解析する必要があります。JSON.parse(response); プロパティを読み取ることができるJSONオブジェクトを提供します

于 2012-08-31T12:54:16.207 に答える
1

jsfiddleで次の例を試してみてください。

これは、JSON.parse()を使用するためのより良い方法ではありません。または$.parseJSON(); (jqueryバージョン)

しかし、これが問題である場合は、jsonが文字列として返されるため、修正され、コードを変更できます。

http://jsfiddle.net/dadviegas/gf8Yq/

于 2012-08-31T13:01:55.707 に答える
0

ajax/phpの部分はAjaxのように見えるはずだと思います

$.ajax({
        type: "POST",   
        url: "link.php",
        dataType: "json",
        success: function(result){
             alert(result.orientation); 
        }
    });

PHP

$response=array("filename" => "$newfilename", "orientation" => "$orientation");
$response=json_encode($response);
echo $response;

少なくとも5.2phpバージョンを使用するようにしてください

于 2012-08-31T14:19:51.333 に答える