Javascript中的JSON对象“未定义”错误

时间:2011-08-02 18:29:22

标签: php javascript json

我正在使用PHP上传文件,并希望将文件名和文件状态返回给javascript。在PHP中,我通过以下方式创建json对象:

$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 

我收到一条错误消息,说明它们未定义。请帮助我真的坚持这个。感谢。

3 个答案:

答案 0 :(得分:3)

此时fileStatus只是一个字符串,因此它没有resultfileName等属性。您需要使用Firefox的原生JSON.parse或jQuery的jQuery.parseJSON等方法将字符串解析为JSON对象。

示例:

var fileStatusObj = jQuery.parseJSON(fileStatus);

答案 1 :(得分:2)

如果警报显示{"result":"success","fileName":"cake"},那么您可能仍然需要将字符串转换为JSON对象。根据您正在开发的浏览器,您可以使用native JSON支持或JSON.org实现将字符串转换为对象。从那以后它应该按预期工作。

答案 2 :(得分:1)

设置变量时,请勿在其周围加上引号。只需设置如下变量:

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

或:

var fileStatus = <?=$uploadData?>;

不要这样做:

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