jQuery ajax post Uncaught RangeError:超出最大调用堆栈大小

use*_*841 19 javascript jquery

我有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>
Run Code Online (Sandbox Code Playgroud)

此代码产生错误"Uncaught RangeError:超出最大调用堆栈大小",我不明白为什么.我没有触发器,我使用了preventDefault和stopPropagation,但我仍然有这个错误.谁能帮我?

小智 46

如果您在该范围中未定义的数据中传递某些内容,也会出现此错误.另一个原因是直接传递val()数据.

  • 谢谢!我直接用.val()传递数据,但在一个属性中我忘了添加.val(),你的评论为我节省了很多时间! (6认同)

小智 8

不使用var a = $(this)来获取页面,而是使用一个隐藏字段并为该字段提供页面值.

<input type="hidden" value="xyzpage" id="pageValue">

var pageVal = $("#pageValue").val();

data: {
         model: model, page:pageVal 
      },
Run Code Online (Sandbox Code Playgroud)

这将解决我猜的问题


Cos*_*gul 5

我想分享我的经验,

就我而言,这只是一个错误的参数名称和完全相同的错误消息:我输入了 configID 而不是 confID,并收到了此错误。

 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);
        }
    });

}
Run Code Online (Sandbox Code Playgroud)


Iva*_*ele 2

你需要把var a = $(this);. 我不知道你想在那里实现什么,但使用 jQuery 包装的单击元素作为请求数据是没有意义的。