>  기사  >  웹 프론트엔드  >  JavaScript call_javascript 기술에서 변수 매개변수 전달과 관련된 문제 및 해결 방법

JavaScript call_javascript 기술에서 변수 매개변수 전달과 관련된 문제 및 해결 방법

WBOY
WBOY원래의
2016-05-16 15:34:271226검색

매개변수를 받는 js 메소드가 있습니다:

코드 복사 코드는 다음과 같습니다.

함수 f1(myValue){ 경고(myValue) }

에 변수가 있습니다:

코드 복사 코드는 다음과 같습니다.

var passValue="Hello World";

이 메소드를 호출할 때(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>
성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.