0

我正在使用 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

请帮助我知道我可能错在哪里。谢谢

4

1 回答 1

0

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

它应该看起来像,如果//my data应该是实际数据

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

于 2013-08-28T11:38:17.103 回答