JQuery Ajax Post Unculting RangeRor:最大呼叫堆栈大小超过了



我对jquery ajax有问题。我有javascript

 <script type="text/javascript">
    $(function() {
        $('body').on("click", "#pager a", function(e) {
            e.stopPropagation();
            e.preventDefault();
            var a = $(this);
            var model = $('#searchForm').serialize();
            $.ajax({
                url: '/Product/Products',
                type: 'POST',
                data: {
                    model: model, page: a
                },
                success: function (data) {
                    alert('success');
                    $('#productsList').html(data);
                }
            });
        });
    });
</script>

此代码产生错误"未接管的连击:最大呼叫堆栈大小超过了",我不明白为什么。我没有触发器,我使用了预防违规和止损,但是我仍然有这个错误。谁能帮我?

如果您将数据传递到该范围中未定义的数据中,也可能会出现此错误。另一个原因是直接使用val()传递数据。

而不是使用var a = $(this)获取页面,使用一个隐藏字段并将页面值给字段。

<input type="hidden" value="xyzpage" id="pageValue">
var pageVal = $("#pageValue").val();
data: {
         model: model, page:pageVal 
      },

这将解决我猜

的问题

我想分享我的经验,

就我而言,这只是一个错误的参数名称,而完全相同的错误消息:我放置了配置,而不是结识,并得到了此错误。

 function openNameEditor() {
    var confID = $("#configStatusList").attr("data-id");
    debugger;
    $.ajax({
        url: '@Url.Action("GetModelNameToChange", "Admin")',
        type: "GET",
        dataType: "HTML",
        data: { configID: configID},//Here, instead of confID, I put configID which doesn't exist in the function.
        success: function (response) {
            $("#name-editor").html(response);
        },
        error: function (er) {
            alert(er.error);
        }
    });
}

您需要取下var a = $(this);。我不知道您尝试在那里实现什么,但是使用jQuery包装的单击元素作为请求数据是无sense的。

无尽的循环也可能导致这种错误。查看您在功能中不调用相同功能。

我在使用jquery.tmpl.js解析一大块JSON时遇到了这样的问题。使用Concat()函数处理大型数组时会出现此错误。这是一个问题的链接:https://bugs.chromium.org/p/chromium/issues/detail?id=103583自2011年以来一直没有解决这个问题。要解决该问题,我必须编辑jQuery-3.3.1.js JavaScript库文件。对于那些想重复此决定的人,请执行以下操作:在库文件 return concat.apply ([], ret);中找到以下行,并将其替换为下面的代码。

        // Flatten any nested arrays
        if ([].flat) return ret.flat();

        var ret2 = [];
        ret.forEach(function (i) {
            if (i instanceof Array) {
                i.forEach(function (i2) {
                    ret2.push(i2);
                });
            } else {
                ret2.push(i);
            }
        });
        return ret2;
        // original code:
        // return concat.apply([], ret);
        // chrome bug: https://bugs.chromium.org/p/chromium/issues/detail?id=103583

我们检查浏览器的武器库中是否有一个Flat()功能,它具有Chrome浏览器,并且是否存在 - 简单地合并数据阵列 - 不需要更多。如果没有,浏览器将走较慢的路径,但至少没有错误。

最新更新