0

サーバーにデータを送信し、サーバーからJsonを受信するためにa4j jsFunctionを使用しています

<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 に答える