Javascript函数参数在ajax调用中不可用

时间:2013-04-29 09:30:25

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

我正在开一个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代码

我试着看看所有可能的解决方案。请有人帮帮我吗?

的问候。 哈

5 个答案:

答案 0 :(得分:0)

使用此功能 - '@Url.Action("Details", "ProjList", new { id = myRadio.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);
         });
     });

然后 -

答案 1 :(得分:0)

所以你的功能就像

 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);
      });
  });

答案 2 :(得分:0)

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

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

答案 3 :(得分:0)

剃刀引擎解释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);
        });

答案 4 :(得分:0)

如果您只想要单选按钮的值,请尝试这样

<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>