예
매개변수를 받는 js 메소드가 있습니다:
에 변수가 있습니다:
이 메소드를 호출할 때(Ajax가 제출할 때 나타남):
@Ajax.ActionLink("Text","Controller",new{parameter},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>