function svv(){ var o='ccc'; var p='eee'; var q='fff'; showDialogByVarAndFuncAndParams("haha",c,[o,p,q]); } function c(f){ d.apply(this,f); //apply 是重点 } function d(a,b,d){ alert(a); alert(b); alert(d); } function showDialogByVarAndFuncAndParams(msg,transferFunction,params){ $("#dialog_message").html(msg); $("#messageDialog").dialog({ modal:true, buttons:{ "确认":function(){$(this).dialog("close"); transferFunction.apply(this,params); }} }); } 这样是可以的,我正好碰上这样的需要 并且测试成功了。
String javaArrs = "[1, 2, 3]";
%>
<script>
var jsArrs = <%=javaArrs%>;
alert(jsArrs[1]);
</script>
<%
byte [] fileContect;
%>
<script>
function methodA(a ,b, c){}methodA("<%=new String(fileContect)%>");</script>
byte [] fileContect;其实是一个文件,要把它设为JS函数的一个型参
byte [] fileContect;
//...
String javaArraysStr = Arrays.toString(fileContect);
%><script>
var jsVar = <%=javaArraysStr%>;
</script>
JSON 是 JS 的一种标准数据交换格式,你使用下一楼的例子就知道了。如果是纯JS代码就是:
var objs = ["Hello", "World", "!!!"];
alert(objs[1]);
byte [] fileContect;其实是一个文件(后台取的),要把它设为JS函数的一个型参
知道你想这样做但js能把一个文件的字节数组怎么着???jsp 生成html的时候 也就是你想把数据从jsp传到js的时候 一般只能传字符串你可以把文件byte数字转成16进制字符串,传到页面
唉,还是没说到点子上啊算了,就给你个例子,自己运行下也应该知道意思了:
<%
byte[] fromJava = {64, 65, 66}; // 这里应该是 request.getAttribute("xxoo"); 或者调某JavaBean获取
String toJSON = Arrays.toString(fromJava); // 得到对应的JSON字符串,可以供JavaScript使用。
%>
<script>
// 这是你的JS函数
function myFun(paramBytes) {
alert(paramBytes[0]);
alert(paramBytes[1]);
alert(paramBytes[2]);
}// 这是调用你JS函数的
var paramObj = <%=toJSON%>; // 这里就变成JS数组对象了
myFun(paramObj); // 直接就传参了
</script>
楼主你先试试看,应该就能理解了,传参是没有问题的。
不要误会,只是简单数组恰好能得到JSON字符串而已,复杂对象用这个是不行的。
恩 字符串数组就不行了,生成的结果类似 [aaa,bbb] json应该是 ['aaa','bbb'] Arrays 一直没怎么用,看到兄台这样转,佩服
var o='ccc';
var p='eee';
var q='fff';
showDialogByVarAndFuncAndParams("haha",c,[o,p,q]);
}
function c(f){
d.apply(this,f); //apply 是重点
}
function d(a,b,d){
alert(a);
alert(b);
alert(d);
}
function showDialogByVarAndFuncAndParams(msg,transferFunction,params){
$("#dialog_message").html(msg);
$("#messageDialog").dialog({
modal:true,
buttons:{
"确认":function(){$(this).dialog("close");
transferFunction.apply(this,params);
}}
});
}
这样是可以的,我正好碰上这样的需要 并且测试成功了。