【问题标题】:Javascript function parameter not available in ajax callsJavascript 函数参数在 ajax 调用中不可用
【发布时间】:2013-04-22 22:06:22
【问题描述】:

我正在处理一个 HTML 页面,在该页面上单击一个按钮,我正在调用一个 javascript 函数。该函数有一个来自 html 字段的参数。而且我必须根据输入参数加载另一个 html 页面(它的 asp.net MVC3)。

在html页面中:

        <input type="radio" id="selected" name="selected" onclick="javascript:handleselect(this);" value=@item.ProjectID />

在相同的代码中,我有 javascript..

<script type="text/javascript" language="javascript"> 
    function handleselect(myRadio) {      
         $.get('@Url.Action("Details", "ProjList", new { id = myRadio.value })', 
         async: false,
         function (viewResult) {
             $("#some-container").html(viewResult);
             alert(viewResult);
         });
     });

</script>

这是我的示例脚本。但是,我收到类似“当前上下文中不存在名称'myRadio'”这样的错误。

HTML 代码

我试图查看所有可能的解决方案。请问有人可以帮我吗?

问候。 哈里

【问题讨论】:

  • 显示您定义 myRadio 的代码
  • myRadio.value 不需要在字符串之外吗?如果你做 alert(myRadio.value); 你会得到什么?在这个函数的第一行?
  • 我得到了正确的值。只有当它在里面时才得到结果。

标签: javascript asp.net ajax asp.net-mvc-3


【解决方案1】:

如果你只是想要单选按钮的值,试试这样

<input type="radio" id="selected" name="selected" onclick="javascript:handleselect(this.value);" value=@item.ProjectID />

或者像这样

<input type="radio" id="selected" name="selected" onclick="javascript:handleselect(@item.ProjectID);" value=@item.ProjectID />

并且在函数中你直接消费这个值

<script type="text/javascript" language="javascript"> 
    function handleselect(myRadioValue) {      
         $.get('@Url.Action("Details", "ProjList", new { id ='+myRadioValue+'})'), 
         async: false,
         function (viewResult) {
             $("#some-container").html(viewResult);
             alert(viewResult);
         });
     });

</script>

【讨论】:

    【解决方案2】:

    使用这个 - '@Url.Action("Details", "ProjList", new { id = myRadio.value})

    或者如果你需要 value 标签的值使用这个 Javascript 语句-

    '@Url.Action("Details", "ProjList", new { id = '+myRadio.getAttribute("value")+'})'
    

    编辑:

        function handleselect(myRadio) { 
    var url = @Url.Action("Details", "ProjList", new { id = myRadio.getAttribute("value")});     
             $.get(url, 
             async: false,
             function (viewResult) {
                 $("#some-container").html(viewResult);
                 alert(viewResult);
             });
         });
    

    那么-

    【讨论】:

    • 你需要标签中html属性值的值吗?
    • 我想要这个值,因为我正在动态更改值。
    • 您好,感谢您的回复。现在,我在 HTML 代码中遇到错误:“Microsoft JScript 运行时错误:预期对象”。我错过了什么吗?
    • 这意味着你需要@item.ProjectID?
    【解决方案3】:

    所以你的功能会像

     function handleselect(myRadio) {      
          $.get('@Url.Action("Details", "ProjList")', { 
             id: $(myRadio).val() 
          },
          function (viewResult) {
              $("#some-container").html(viewResult);
              alert(viewResult);
          });
      });
    

     function handleselect(myRadio) {      
          $.get('@Url.Action("Details", "ProjList")', { 
             id: $(myRadio).attr('value') 
          },
          function (viewResult) {
              $("#some-container").html(viewResult);
              alert(viewResult);
          });
      });
    

    【讨论】:

    • 您好,感谢您的回复。现在,我在 HTML 代码中遇到错误:“Microsoft JScript 运行时错误:预期对象”。我错过了什么吗?
    • @Hariprasauth Ramamoorthy:发出警报 $(myRadio).val(),你得到了什么。其次是控制台有什么错误
    • 它现在工作正常!!!!!!!!! :) 谢谢一百万..这是因为缺少括号!对我不好!
    【解决方案4】:

    razor 引擎会解释 urlhelper,但不知道您的客户端代码。这就是您不能将变量与Url.Action 一起使用的原因。你可以试试这个:

    $.get('@Url.Action("Details", "ProjList")?id=' + myRadio.value, 
        function (viewResult) {
            $("#some-container").html(viewResult);
            alert(viewResult);
        });
    

    或者另一种选择是使用数据参数:

    $.get('@Url.Action("Details", "ProjList")', { id: myRadio.value}, 
            function (viewResult) {
                $("#some-container").html(viewResult);
                alert(viewResult);
            });
    

    【讨论】:

    • 您好,感谢您的回复。现在,我在 HTML 代码中遇到错误:“Microsoft JScript 运行时错误:预期对象”。我错过了什么吗?
    • 你怎么称呼handleselect?请编辑您的问题并在此处添加相关代码。
    • 啊等等,我认为你的代码根本不会运行。 async:false 不是 $.get 的有效参数。
    • 尝试删除 assync: false 行。它仍然给出与“Microsoft JScript 运行时错误:预期对象”相同的错误。
    • 您是否使用过类似 firebug 的工具来查看错误指向您的位置?
    【解决方案5】:

    myRadio是客户端变量,在服务器端不可用

    function handleselect(myRadio) {
        $.get('@Url.Action("Details", "ProjList")', { 
            id: myRadio.value 
        }, function (viewResult) {
                  $("#some-container").html(viewResult);
                  alert(viewResult);
              });
    }); 
    

    【讨论】:

    • 您好,感谢您的回复。现在,我在 HTML 代码中遇到错误:“Microsoft JScript 运行时错误:预期对象”。我错过了什么吗?
    • @HariprasauthRamamoorthy 能否分享一下handleselect 的名称
    猜你喜欢
    • 2011-10-12
    • 2013-02-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-28
    • 1970-01-01
    相关资源
    最近更新 更多