JavaScript调用传递变量参数的相关问题及解决办法
举例
有一个js方法,接收参数:
functionf1(myValue){alert(myValue);}
有一个变量:
varpassValue="HelloWorld";
在调用这个方法的时候(我是出现在Ajax提交的时候):
@Ajax.ActionLink("文本","控制器",new{参数},newAjaxOptions(){HttpMethod="post",OnSuccess="f1(PassValue)"})
这里注意最后的OnSuccess,如果直接把变量丢进去,会把变量认为是一个字符串
如果改成OnSuccess="f1("+PassValue+")"也不行
搜了一下是需要转义字符
OnSuccess="f1('"+PassValue+"')"
这样就没问题了
不过上面调用Ajax的时候没注意,这里只是为了给异步调用方法f1()传参数
所以就不用@Ajax了改成普通A标签就可以了不然会调用两次控制器
ps:js将方法作为参数调用
<!DOCTYPEhtml>
<html>
<head>
<metahttp-equiv="content-type"content="text/html;charset=utf-8"/>
<title>js调用</title>
<scriptsrc="cssjs/jquery.js"type="text/javascript"></script>
<scripttype="text/javascript">
$().ready(function(){
$.dialog=function(settings){
if($.isFunction(settings.okCallback)){
if(settings.height==null){
if(settings.okCallback.apply()!=false){
alert("1");
}
}else{
if(settings.okCallback.call(this,settings.height)!=false){
alert("2");
}
/*
if(settings.okCallback.apply(this,arguments)!=false){
alert("2");
}
*/
}
}
}
});
</script>
<scripttype="text/javascript">
$(function(){
$.dialog({
okCallback:print,
height:{data:"你好"}
});
});
functionprint(ee1){
alert("print(ee1)");
alert(ee1.data);
/*
alert(ee1.height.data);
*/
/*
functionprint(a,b,c,d){
alert(a+b+c+d);
}
functionexample(a,b,c,d){
//用call方式借用print,参数显式打散传递
print.call(this,a,b,c,d);
//用apply方式借用print,参数作为一个数组传递,
//这里直接用JavaScript方法内本身有的arguments数组
print.apply(this,arguments);
//或者封装成数组
print.apply(this,[a,b,c,d]);
}
//下面将显示"背光脚本"
example("背","光","脚","本");
*/
</script>
</head>
<body>
</body>
</html>