2

Java json オブジェクトから関数を呼び出すことができるかどうか疑問に思っていますか?

ジャワ:

JSONObject json = new JSONObject();
json.put("fnRowCallback", "test()");

jquery:

$ (function () {
    "use strict";
    function test() {
        alert('test');
    }
}(jQuery)); 

究極の達成が必要です。

JSONObject json = new JSONObject();
json.put("fnRowCallback", function( nRow, aData, iDisplayIndex, iDisplayIndexFull ) {
                if (aData["rush"] == "Rush" ) {
                    $(nRow).addClass("gradeX");  
                }
            });
4

3 に答える 3

1

代わりに Java が javascript を返すようにすれば、これを実現できます。

<script src="myjavapage.jsp"></script>

あなたのJavaを返してください

$(function(){
    alert('test');
});

ただし、json にコードを含めずに ajax を使用してオンデマンドでコンテンツを取得する js ファイルを用意するよりも、この方法でコーディングする正当な理由は思いつきません。それはかなり無意味に思えます。

于 2013-02-04T20:41:42.757 に答える
1

私は自分の質問に答えることになりました。解決策は、JSONLiteral を次のように使用することです。

ジャワ

public JSONObject getOptions() {
    JSONObject json = new JSONObject();
    json.put("fnRowCallback", new JSONLiteral(String.format("fnRowCallback()")));
    return json;
}

JS。

function fnRowCallback(){
    var fnRowCallback = function( nRow, aData, iDisplayIndex, iDisplayIndexFull ) {
        if (aData["rush"] == "Rush" ) {
            nRow.className = nRow.className + " gradeX";  
        }
    };
    return fnRowCallback;
}

みんな、ありがとう。

于 2013-02-06T19:02:43.423 に答える
0

Function.prototype.callまたはFunction.prototype.applyを参照してください。

var obj = {
   foo: function() {
    console.log('foo called');
   }
};

var json = {method: "foo"};

obj[json.method].call(this);
于 2013-02-05T06:40:09.890 に答える