【问题标题】:jQuery $.post returning "Maximum call stack size exceeded"jQuery $.post 返回“超出最大调用堆栈大小”
【发布时间】:2017-05-17 23:51:19
【问题描述】:

在 jquery 中执行 ajax 发布时获取堆栈大小超出错误

$('#challengeForm').submit(function(e) {
    var ajaxUrl = admin.ajax_url;
    var emailInput = $(this).find('input[name="email"]');
    var formId = $(this).find('input[name="formId"]');
    $.post(ajaxUrl,{action:'challengeFormSubmit',email:emailInput,listId:formId},function(data) {

        console.log(data);

    },'json');
    e.preventDefault();
});

我运行了一些console.log 调试,发现错误在$.post 处调用。

【问题讨论】:

    标签: jquery ajax post


    【解决方案1】:

    您应该使用值(而不是对象):

    $('#challengeForm').submit(function(e) {
        var ajaxUrl = admin.ajax_url;
        var emailInput = $(this).find('input[name="email"]').val();
        var formId = $(this).find('input[name="formId"]').val();
        $.post(ajaxUrl,
            {
                action:'challengeFormSubmit',
                email:emailInput,
                listId:formId
            },
            function(data) {
                console.log(data);
            },
            'json'
        );
        e.preventDefault();
    });
    

    【讨论】:

    • 你的代码和我的代码并没有什么不同,只是稍微改了一下结构。
    • 您缺少.val() 部分。看看吧。
    • 糟了!度过了漫长的一天
    【解决方案2】:

    您的函数正在重新提交。请尝试以下操作:

    1. e.preventDefault(); 移至函数顶部。
    2. return false;结束函数

    【讨论】:

    • 如果 e.preventDefault() 不起作用 - 提交会将他移动到另一个页面,因此 preventDefault 确实有效。这不是他的问题。
    • 因此返回 false。在开始漫长的过程之前防止事件的默认行为只是一种良好的卫生习惯。
    • 不管是在顶部还是底部调用preventDefault()
    猜你喜欢
    • 2016-10-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-18
    • 2013-07-31
    • 1970-01-01
    • 1970-01-01
    • 2020-07-18
    相关资源
    最近更新 更多