Java json对象按名称调用函数
我想知道是否可以从JavaJSON对象调用函数 范例 爪哇: jquery:Java json对象按名称调用函数,java,jquery,json,Java,Jquery,Json,我想知道是否可以从JavaJSON对象调用函数 范例 爪哇: jquery: $ (function () { "use strict"; function test() { alert('test'); } }(jQuery)); 需要最终的成就 JSONObject json = new JSONObject(); json.put("fnRowCallback", function( nRow, aData, iDisplayIndex, iDi
$ (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");
}
});
如果让Java返回javascript,则可以实现这一点
<script src="myjavapage.jsp"></script>
但是,我想不出一个好的理由来用这种方式编写代码,而不是使用一个js文件,该文件使用ajax按需获取内容,而不在json中包含代码。这似乎毫无意义。参见或
最后我回答了自己的问题。解决方案是使用一个JSONLiteral,就像这样 爪哇 JS
谢谢大家 你想完成什么?你的基本目标是什么?你的JSON代码在服务器上。您试图在客户端上调用jQuery函数
test()
。我是tapestry5用户,我正在尝试使用jquery datatable。该组件由一个JavaJSON对象初始化。我面临的问题是试图添加这个配置json.put(“fnRowCallback”,“function(nRow,aData,iDisplayIndex,iDisplayIndexFull){alert('test');”);但是json对象不接受函数,所以我希望能够调用该函数。@Lion,tapestry5将json对象输出到clientJSON不能强迫任何事情发生。json只是一个字符串-发生的事情由接收者定义-接收者不应该执行不可信的任意代码。也许我一直都在讨论这个问题错误的方法。我是从下面的例子,表2第60行开始工作的。我试图合并这个例子,“fnRowCallback”那是什么(“fnRowCallback”)与json对象有关吗?fnRowCallback将是我在json对象中的密钥。如果你查看我发布的第一个链接,你会注意到该组件是在服务器端用json对象配置的,但在datatables的示例中,他们直接在javascript中配置它,这似乎不是我的选项。我的对将是functi在上,我不确定如何将该函数作为一对传递,因为json对象只是字符串。如何将其从json字符串传递到dataTable
插件?实际上tapestry组件将json对象作为参数传递到dataTable,但问题是该函数是作为字符串传递的,而不是作为参数传递的而不是一个可执行函数。我想也许我可以把一个函数名传递到json对象中,然后用它来调用函数。我真的不知道如何处理这个问题。
<script src="myjavapage.jsp"></script>
$(function(){
alert('test');
});
var obj = {
foo: function() {
console.log('foo called');
}
};
var json = {method: "foo"};
obj[json.method].call(this);
public JSONObject getOptions() {
JSONObject json = new JSONObject();
json.put("fnRowCallback", new JSONLiteral(String.format("fnRowCallback()")));
return json;
}
function fnRowCallback(){
var fnRowCallback = function( nRow, aData, iDisplayIndex, iDisplayIndexFull ) {
if (aData["rush"] == "Rush" ) {
nRow.className = nRow.className + " gradeX";
}
};
return fnRowCallback;
}