如何将值从视图传递到javascript?

时间:2013-04-28 19:41:34

标签: javascript jquery ajax asp.net-mvc-4

所以,我在一个项目中工作,当我将数据从我的视图传递到我的javascript时,我有一个问题,我有一个foreach循环但总是得到最后的元素,这是我的观点:

 @foreach (var al in Model.alerts)
    { 
    <table border="0">
     <tr>
     <td rowspan=3><img src= '@Html.Raw(al.Owpicture)' class="img" alt="IMAGES"/></td>
     <td><label class="lb">@Html.Raw(al.cinOw)</label></td>
     </tr>
     <tr>
    <td><label class="lb">@Html.Raw(al.Owname)</label></td>
     </tr>
     <tr>
     <td><label class="lb">@Html.Raw(al.OwpermitNumber)</label></td>
     </tr>
    </table>
        <script>
            //this is variable to pass
            var carNum = '@Html.Raw(al.carNumber)';
        </script>
    <input type="submit" name="Report" value="Report" onclick="IsReport(carNum)" />

,这是我的脚本代码:

 function IsReport(carNum)
   {
       var url = '/Home/IsReport/' + carNum;
        $.ajax({
        type: "Post",
        url: url,
        data: {},
        datatype: 'json',
        success: function (data) { alert(carNum); },
    });
   }

我尝试了所有的东西,但我总是得到最后的 carNum ,所以如果有人知道我会非常感激。

2 个答案:

答案 0 :(得分:2)

您需要尝试这种方式: -

<input type="submit" name="Report" value="Report" onclick="IsReport(@Html.Raw(al.carNumber))" />

您的代码中发生的事情是,每次迭代都会将以下内容放入您的html中。当你引用变量carnum时,它具有上一次迭代的值。

<script>
            //this is variable to pass
            var carNum = '@Html.Raw(al.carNumber)';
        </script>

另一种方法是使用数据属性而不是使用onclick事件: -

<input type="submit" name="Report" value="Report" data-carnum="@al.carNumber" />

并在您的脚本中

$(function(){
$("input[name=Report]").on('click',function(){
....//some code
IsReport($(this).data('carnum'));
...///some code
});

});

答案 1 :(得分:0)

    function IsReport()
       {
            $.ajax({
            type:"Post",
            url:'/Home/IsReport/' + carNum,
            datatype:'json',
            success:function (data) { alert(data.carNum); },
        });
       }

上面的答案显示为data.carNum值。