Json无法通过点运算符访问

时间:2013-08-28 11:22:47

标签: javascript json ajax4jsf

我使用a4j jsFunction将数据发送到服务器并从服务器接收Json

<a4j:jsFunction name="submitData"
action="#{imageRetriveBean.saveData}" data="#{responseNodesPathsBean}"
oncomplete="processData(event.data)">
    <a4j:param name="param1" noEscape="true" value="myFunction()"
    assignTo="#{imageRetriveBean.requestJsonMsg}" />
    <a4j:param name="param2" noEscape="true" value="getFloorNo()"
    assignTo="#{imageRetriveBean.floorNo}" />
</a4j:jsFunction>

在下面的processData函数中

function processData(data)
{
    console.log(data);
    var dataObj = data.responseJsonMsg;
}

console.log正确打印数据。以下是输出。

({responseJsonMsg:"{//my data}"})

但我无法使用data.responseJsonMsg

访问数据

控制台提供错误

TypeError: data is undefined

发生错误的代码图像以及Chrome上的错误输出

https://docs.google.com/file/d/0B2LrAStQ7RleOUtHMTRfT2sxams/edit?usp=sharing

https://docs.google.com/file/d/0B2LrAStQ7RleU09Vdll1VURaT2c/edit?usp=sharing

请帮助我知道我哪里错了。 感谢

1 个答案:

答案 0 :(得分:0)

如果这是console.log的输出,那么它不是一个javascript对象,你需要解析它JSON.parse(data),尽管从你所显示的那个不是一个有效的json字符串,所以它仍然错了。它需要删除括号,responseJsonMsg需要引用等。你需要让你的服务器端代码输出一个有效的json字符串

如果//my data应该是实际数据

,它应该看起来像

{"responseJsonMsg":{ "name":"patrick", "where":"here" }}