2

私は struts2 を使用しており、アクションが実行された後にトリガーされるこのコードがあります (Ajax 経由):

    dojo.event.topic.subscribe("cambioProyecto", function() {
            var hola = json_entregables;
            alert("hola");
    }

*json_entregables* 変数は、struts2 を介して指定されるパラメーターです。jspでアクセスできますが、問題ありません。しかし、私はスクリプトではできません。何が問題ですか?

4

2 に答える 2

1

欲しいものを手に入れる方法を見つけましたが、それはかなり汚れています。無名関数は Ajax プロセスからのコールバック関数であるため、関数のパラメーターを定義して応答を取得しました。その応答は、応答の実際の html を含む文字列です。

ここで、パラメーターにアクセスするには、その値を隠し要素として jsp 内に含める必要があります。このような:

<s:hidden id="hidden_json_entregables" value="%{json_entregables}"/></p>

次に、次のようにjqueryで取得しました。

dojo.event.topic.subscribe("cambioProyecto", function(jsp) {
        var o = $(jsp)
        var string_entregables = o.find("#hidden_json_entregables").text();
}

とにかく、それは良い方法ではないと思うので、お勧めしません。しかし、それは私にとってはうまくいきました。ご支援ありがとうございます。

于 2012-06-10T04:08:27.850 に答える
0

あなたの匿名関数はコールバック関数です。ajax 呼び出しが完了すると、struts2 によって呼び出されます。struts2 は調べていませんが、コールバック関数のパラメーターを送信します。これらのパラメーターにアクセスできるように、無名関数定義でこれらのパラメーターを宣言する必要があります。

したがって、json_entragables が struts2 からコールバックに返されるオブジェクトである場合、コールバック関数を次のように記述する必要があります。

dojo.event.topic.subscribe("cambioProyecto", function(json_entregables) {
        //console.log(arguments)
        var hola = json_entregables;
        alert("hola");
}

もちろん、この場合、json_entragables の名前を好きな名前に変更できます。struts2 が何を送信するかわからない場合は、お気に入りのデバッガーを使用して関数の引数配列を検査し、そこにあるものを確認できます。

于 2012-06-09T20:14:39.780 に答える