为啥代码在 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
),它将调用该成功函数。因此,请查看网络面板以查看它返回的响应代码。例如,重定向(如301
或302
)不会触发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 中没有达到成功函数?的主要内容,如果未能解决你的问题,请参考以下文章
JQuery Ajax 更新 MySQL 数据库,但没有运行成功函数