为啥代码在 Ajax 中没有达到成功函数?

Posted

技术标签:

【中文标题】为啥代码在 Ajax 中没有达到成功函数?【英文标题】:Why is the code not reaching the success function in Ajax?为什么代码在 Ajax 中没有达到成功函数? 【发布时间】:2022-01-09 18:57:15 【问题描述】:

代码正在完成它的工作,它正在将表单提交到数据库并重定向,但代码没有达到成功功能,任何帮助将不胜感激。

Toastr 也已正确导入。

submitHandler: function(form) 
            $.ajax(
                type:form.method,
                url: form.action,
                data: new FormData(form),   
                success: function(data)
                    toastr.success("Success");
                    /*console.log('Done');
                    let obj = JSON.parse(res);
                    //console.log(res); 
                    //return false;                         
                    if (obj.status == 'success') 
                        toastr.success("Success");
                        //window.location.replace("URL('admin/calling-cards/edit')/"+obj.id);   
                     else if (obj.status == 'error') 
                        toastr.error(obj.msg);
                    */
                
            )
        

【问题讨论】:

"...以及重定向..."你是什么意思? jQuery.ajax 从根本上没有损坏,如果您的服务器返回成功响应 (2xx),它调用该成功函数。因此,请查看网络面板以查看它返回的响应代码。例如,重定向(如301302)不会触发success,因为这不是成功代码,而是重定向代码(在这里没有任何用处)。 要补充以上内容,您提到的页面重定向是在收到 AJAX 响应之前发生的(这就是重定向和使用 AJAX 有点奇怪的原因),或者您的 JS 中存在错误/AJAX 并且表单提交未被阻止。在后一种情况下,打开 devtools 并检查控制台以查找引发的错误。 @T.J.Crowder 谢谢你的帮助。 @RoryMcCrossan 谢谢你的帮助。 【参考方案1】:

processData: false,contentType: false,成功了。

工作代码:

submitHandler: function(form) 
            $.ajax(
                type:form.method,
                url: form.action,
                data: new FormData(form),
                processData: false,
                contentType: false, 
                success: function(res)
                    console.log("sdfsdf");
                    alert("adfsdf");
                    toastr.success("Success");
                    /*console.log('Done');
                    let obj = JSON.parse(res);
                    //console.log(res); 
                    //return false;                         
                    if (obj.status == 'success') 
                        toastr.success("Success");
                        //window.location.replace("URL('admin/calling-cards/edit')/"+obj.id);   
                     else if (obj.status == 'error') 
                        toastr.error(obj.msg);
                    */
                
            )
        

【讨论】:

以上是关于为啥代码在 Ajax 中没有达到成功函数?的主要内容,如果未能解决你的问题,请参考以下文章

Ajax - 如何在成功函数中使用返回的数组

JQuery Ajax 更新 MySQL 数据库,但没有运行成功函数

服务器上的 AJAX 成功函数

JavaScript, Ajax - 为啥 JavaScript 代码上的 Ajax 函数不能正常运行?

Ajax 成功函数被忽略 - 代码仍在运行

从arraylist返回值到ajax成功函数