我有一个jQuery $ .ajax POST,如果开发人员工具处于打开状态,则仅在IE11上触发。它在Chrome和Edge上正常运行。触发它的代码如下:

$(".edit").click(function () {
        data = "id=" + $(this).attr("cart") + "&num=" + $("input.num").val();
        $.ajax({
            url: '@Url.Action("Edit","Cart")',
            data: data,
            type: "POST"
        }).done(location.reload());
    });


无论如何,另一个页面上的另一个POST都可以工作。以下代码创建它:

$(".add").click(function () {
        var nums = [
            $(this).attr("item_id"),
            $(this).attr("quote_id"),
            $(this).attr("quantity_amount"),
            $(this).attr("cus_no")
        ]
        data = $.validator.format("item_id={0}&quote_id={1}&quantity_amount={2}&cus_no={3}", nums);
        $.ajax({
            url: '@Url.Action("Add","Cart")',
            data: data,
            type: "POST"
        });
    });


我完全迷路了。

最佳答案

您做错了几件事,可能是造成问题的原因

首先使用var data = somethinghere代替data = somethinghere

其次,在第一个样本的完成方法中,像

.done(function () { window.location.reload() });


代替

.done(location.reload());


还有一件事情,请记住,通常,如果声明新变量,请始终使用var,还应使用分号(在num数组的末尾添加分号)。 IE中会发生这种奇怪的事情,因为它执行更严格的验证。

07-24 16:08