【问题标题】:mvc ajax doesnt work when I try to call an action in jquery当我尝试在 jquery 中调用操作时,mvc ajax 不起作用
【发布时间】:2016-01-24 00:04:56
【问题描述】:

我想使用 ajax 向控制器发送数量信息和产品 ID。在我点击 addtocart 按钮后什么也没发生,页面没有刷新。我手动刷新了页面,看到请求的数量已成功添加到购物车。为什么页面不自动刷新? 你能帮我看看这里有什么问题吗?

<script>  
    $("#addtocart").click(function () {

        alert("tıklandı");
        var val1;
        var val2;
        val1 = $(".cart_quantity_input").val();
        val2 = $(".product-name-text").attr("id");
        alert("değerler alındı");
        $.ajax({
            type: "POST",
            dataType: "json",
            url: "/Home/AddToCart/",
            data: { id: val2, quantity: val1 },
            success: function (Data) {
                alert("ajak içindeyiz");
            },
            error: function (XMLHttpRequest, textStatus, errorThrown) {

            }
        });
        alert("ajak bitti");
    });

</script>

【问题讨论】:

  • 有请求吗?请注意,您的代码未包含在 $(document).ready 中。甚至可能没有附加事件
  • 我使用警报检查我卡在哪里。我收到所有警报,除了 ajax 成功内的警报。
  • 在这种情况下需要检查浏览器开发工具网络中的实际请求以获取线索。查看状态是什么以及返回什么(如果有)
  • 页面中是否有任何脚本错误?打开浏览器控制台/网络选项卡,看看单击添加到购物车时会发生什么
  • 您的操作方法名称是 AddToCartAddToCart 吗?

标签: jquery ajax model-view-controller


【解决方案1】:

您正在使用 Ajax 函数来发送数据。我通常会专门使用 Ajax 来避免页面被刷新。如果您想刷新页面,那么您应该使用带有提交按钮的表单来代替您的控制器。

但是,我预计您的成功函数未命中的问题是因为您将数据类型指定为 json。这告诉 Ajax 函数,json 数据是双向的,因此您的控制器操作应该返回 json。作为猜测,它看起来更像:

public ActionResult AddToCart(int id, int quantity)
{
    // blah blah blah
    return View();
}

如果是这种情况,请从您的 ajax 调用中删除数据类型参数,然后它应该会触发成功函数。

但是您应该从操作中返回 json 或 ContentResult,然后添加逻辑以根据结果更新购物车显示。或者,如果您想刷新整个页面,请使用表单并提交数据。

【讨论】:

  • 我想使用 AddToCard 按钮将产品添加到购物车,数量来自输入值。但是我无法使用 html.actionlink 传递这个数量数据,这就是我必须使用 ajax 的原因。我解决了调用 html.actionlink 到同一产品详细信息页面的刷新问题。谢谢你的帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-09
  • 2013-05-24
  • 2017-11-19
  • 1970-01-01
  • 1970-01-01
  • 2020-07-12
相关资源
最近更新 更多