2011-08-02 14 views
3

PHPを使用してファイルをアップロードしていて、ファイル名とファイルのステータスをjavascriptに戻したいとします。 PHPではjsonオブジェクトを次のように作成します。JavascriptでJSONオブジェクト "undefined"エラーが発生しました

$value = array('result' => $result, 'fileName' => $_FILES['myfile']['name']); 
print_r ($value); 
$uploadData = json_encode($value); 

jsonオブジェクトが作成されます。私はそれをjavascriptの関数に送り、それをfileStatusという変数として受け取ります。

alert (fileStatus); 

それは良いことがあります

{"result":"success","fileName":"cake"} 

表示されます。しかし、私が試してみるとき

fileStatus.result or fileStatus.fileName 

私は彼らが定義されていないと言うエラーが表示されます。私は本当にこれに固執して助けてください。ありがとう。

+4

'fileStatus'はおそらく' { "結果" を含むJSON文字列です:はこれをしないでください

var fileStatus = <?=$uploadData?>; 

var fileStatus = <?php echo $uploadData; ?>; 

か:ちょうどこのような変数を設定します: "成功"、 "ファイル名": "ケーキ"} '。 – Gumbo

+2

'fileStatus'を設定したコードを表示できますか? –

+0

いくつかのスコープの問題があると思いますが、実際のコードを表示できますか? – Prusse

答えて

3

この時点でfileStatusは単なる文字列なので、resultfileNameなどのプロパティはありません。 FirefoxのネイティブJSON.parseやjQueryのjQuery.parseJSONなどのメソッドを使用して、文字列をJSONオブジェクトに解析する必要があります。

例:

var fileStatusObj = jQuery.parseJSON(fileStatus); 
+0

ありがとうございます。それは魅力のように働いた。 – Falcata

2

警告が表示される場合は、{"result":"success","fileName":"cake"}と表示される場合は、文字列をJSONオブジェクトに変換する必要があります。開発中のブラウザによっては、native JSONサポートまたはJSON.org実装を使用して、文字列をオブジェクトにすることができます。そこから期待どおりに動作するはずです。

+0

また、邪悪な 'eval'関数を使うこともできます。 –

+0

できますが、したくないかもしれません。 :) – Dan

1

変数を設定している、その周りに引用符を入れないでください。

var fileStatus = '<?php echo $uploadData; ?>'; 
関連する問題