JavaScript调用传递变量参数的相关问题及解决办法
作者:bea
举例 有一个js方法,接收参数: 代码如下: function f1(myValue){ alert(myValue); } 有一个变量: 代码如下: var passValue="Hello World"; 在调用这个方法的时候(我是出现在Ajax提交的时候): @Ajax.ActionLink("文本","控制器",new{参数},new AjaxOptions(){ HttpMethod="post",OnSuccess="f1(PassValue)
举例
有一个js方法,接收参数:
代码如下:
function f1(myValue){ alert(myValue); }
有一个变量:
代码如下:
var passValue="Hello World";
在调用这个方法的时候(我是出现在Ajax提交的时候):
@Ajax.ActionLink("文本","控制器",new{参数},new AjaxOptions(){ HttpMethod="post",OnSuccess="f1(PassValue)" })
这里注意最后的OnSuccess,如果直接把变量丢进去,会把变量认为是一个字符串
如果改成OnSuccess="f1("+PassValue+")"也不行
搜了一下是需要转义字符
OnSuccess="f1('"+PassValue+"')"
这样就没问题了
不过上面调用Ajax的时候没注意,这里只是为了给异步调用方法f1()传参数
所以就不用@Ajax了 改成普通A标签就可以了 不然会调用两次控制器
ps:js将方法作为参数调用
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>js调用</title>
<script src="cssjs/jquery.js" type="text/javascript"></script>
<script type="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>
<script type="text/javascript">
$(function () {
$.dialog({
okCallback: print,
height: {data:"你好"}
});
});
function print(ee1) {
alert("print(ee1)");
alert(ee1.data);
/*
alert(ee1.height.data);
*/
/*
function print(a, b, c, d) {
alert(a + b + c + d);
}
function example(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>
有用 | 无用
有一个js方法,接收参数:
代码如下:
function f1(myValue){ alert(myValue); }
有一个变量:
代码如下:
var passValue="Hello World";
在调用这个方法的时候(我是出现在Ajax提交的时候):
@Ajax.ActionLink("文本","控制器",new{参数},new AjaxOptions(){ HttpMethod="post",OnSuccess="f1(PassValue)" })
这里注意最后的OnSuccess,如果直接把变量丢进去,会把变量认为是一个字符串
如果改成OnSuccess="f1("+PassValue+")"也不行
搜了一下是需要转义字符
OnSuccess="f1('"+PassValue+"')"
这样就没问题了
不过上面调用Ajax的时候没注意,这里只是为了给异步调用方法f1()传参数
所以就不用@Ajax了 改成普通A标签就可以了 不然会调用两次控制器
ps:js将方法作为参数调用
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>js调用</title>
<script src="cssjs/jquery.js" type="text/javascript"></script>
<script type="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>
<script type="text/javascript">
$(function () {
$.dialog({
okCallback: print,
height: {data:"你好"}
});
});
function print(ee1) {
alert("print(ee1)");
alert(ee1.data);
/*
alert(ee1.height.data);
*/
/*
function print(a, b, c, d) {
alert(a + b + c + d);
}
function example(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>
有用 | 无用
猜你喜欢
您可能感兴趣的文章:
- Jquery时间轴特效(三种不同类型)
- Jquery全屏相册插件zoomvisualizer具有调节放大与缩小功能
- 关注jquery技巧提高jquery技能(前端开发必学)
- 18个非常棒的jQuery代码片段
- js实现文件上传表单域美化特效
- 非常实用的12个jquery代码片段
- jQuery+CSS3折叠卡片式下拉列表框实现效果
- jquery 表单验证之通过 class验证表单不为空
- 纯javascript移动优先的幻灯片效果
- JS实现点击按钮获取页面高度的方法
- 基于jQuery实现自动轮播旋转木马特效
- 详解jQuery向动态生成的内容添加事件响应jQuery live()方法
- jquery实现网页的页面平滑滚动效果代码
- JS实现超简单的鼠标拖动效果
- JS实现网页标题栏显示当前时间和日期的完整代码
- JS实现在状态栏显示打字效果完整实例
- 12个超实用的JQuery代码片段
- JavaScript Length 属性的总结
- 基于Jquery实现万圣节快乐特效