Java json对象调用函数的名称

时间:2013-02-04 20:10:16

标签: java jquery json

我想知道是否可以从java json对象调用函数?

实施例

的java:

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");  
                }
            });

3 个答案:

答案 0 :(得分:1)

如果您改为使用Java返回javascript,则可以完成此操作。

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

让你的Java返回

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

然而,我不能想出一个很好的理由以这种方式编码,而不是使用js文件,使用ajax按需获取内容,而不是在json中包含代码。这似乎毫无意义。

答案 1 :(得分: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;
}

谢谢大家。

答案 2 :(得分:0)

请参阅Function.prototype.callFunction.prototype.apply

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

var json = {method: "foo"};

obj[json.method].call(this);