【问题标题】:How to redirect to another action using jquery ajax如何使用 jquery ajax 重定向到另一个动作
【发布时间】:2017-10-25 12:39:37
【问题描述】:

我在我的 asp.net mvc 5 应用程序中有一个视图,该视图显示了一个表格,其中包含客户提供的所有订单。我想在用户单击表格中的一行时重定向到“详细信息”操作使用 jquery 显示有关订单的所有详细信息。这是我的看法。。

<table class="table table-striped table-bordered">
<tr>
    <td>Customer Name</td>
    <td>Phone Number</td>
    <td>Watch Model</td>
    <td>Order Status</td>
    <td>Order Location</td>
</tr>
<tbody>
    @foreach (var order in Model.Repairs)
    {
        <tr class="row-click" data-repair-id="@order.Id">
            <td>@order.Customer.GetName()</td>
            <td>@order.Customer.PhoneNumber</td>
            <td>@order.Watch.Model</td>
            <td>@order.Status</td>
            <td>@order.Location</td>
        </tr>
    }
</tbody>
</table>

这是我的 jQuery

@section scripts
{
 <script>
 $(document).ready(function(e) {
    $(".row-click").on("click",
        function() {
            var element = $(this);

            $.ajax({
                type: "GET",
                url: '@Url.Action("Details", "Repairs")',
                data: { id: element.data("repair-id") }
            });
         });
    });
 </script>
}

这是“修复控制器”中的操作

 public ActionResult Details(int id)
    {
        var repair = _context.Repairs.SingleOrDefault(r => r.Id == id);
        return View(repair);
    }

问题是当我点击该行时没有任何反应。

【问题讨论】:

  • 您当前的代码有什么问题?
  • 当我点击什么也没发生。我试图查看事件侦听器是否正常工作,它是(我让它在点击后发出警报,它工作)

标签: jquery asp.net asp.net-mvc model-view-controller


【解决方案1】:

删除您的 jquery ajax 部分并替换为以下内容:

var eleId= element.data("repair-id")
var url = '@Url.Action("Details", "Repairs")';
url = url + '?id=' + eleId;
window.location.href = url;

【讨论】:

  • 它无法识别变量eleId。
  • 是的,我的错。我在答案中修复了它。
  • 谢谢!因为路由是/controller/action/id,所以我只需要做一些不同的事情。所以我只是做了“url = url + '/' + eleId”。谢谢一百万。
  • 另外,为了获得更好的性能,您应该更改事件处理程序以应用于$('#table').on('click', '.row-click',function()之类的表
【解决方案2】:

您也可以使用以下示例获得相同的结果

jquery 代码:

<script type="text/jscript">
    $('#SubmitName').click(function () {
        var url = "/Home/WelcomeMsg";
        var name = $('#Name').val();
        $.get(url, { input: name }, function (data) {
            $("#rData").html(data);
        });
    })
</script>

控制器代码:

public string WelcomeMsg(string input)
{
    if (!String.IsNullOrEmpty(input))
        return "Please welcome " + input + ".";
    else
        return "Please enter your name.";
}

来源/有用链接:http://www.itorian.com/2013/02/jquery-ajax-get-and-post-calls-to.html

希望对您有所帮助,请告诉我您的想法或反馈

谢谢 卡提克

【讨论】:

  • 这是用于重新加载整个页面还是仅用于部分页面。
  • 因为我们使用的是 $.get() ,它是 $.ajax() get 方法的简写,它只是页面重新加载的一部分。谢谢 karthik
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-02-25
  • 1970-01-01
  • 2010-10-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多