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

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

于 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.callFunction.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 回答