Ajax联系表单responseText异常:返回404页面而非预期响应
搞定你的Ajax联系表单404问题
兄弟,你的Ajax联系表单提交后返回404页面,核心问题其实是代码里的一个低级拼写错误,咱们一步步来解决:
问题根源分析
你提交表单时返回404,说明Ajax请求的目标地址不对。我看了你的jQuery代码,发现了一个明显的笔误:ulr应该是url!这个拼写错误导致jQuery无法正确获取表单的action地址,请求了错误的路径,自然返回404页面。
另外还要确认你的mailer.php文件是否真的在当前页面的同一目录下——毕竟HTML表单里的action写的是mailer.php,如果文件位置不对,也会触发404。
修复步骤
1. 修正jQuery里的拼写错误
把代码里的ulr: jQuery(form).attr('action'),改成url: jQuery(form).attr('action'),,这是最关键的一步。
修正后的完整jQuery代码:
jQuery(document).ready(function(){ var form = jQuery('#ajax-contact'); var formMessages = jQuery('#form_messages'); jQuery(form).submit(function(event){ event.preventDefault(); var formData = jQuery(form).serialize(); jQuery.ajax({ type: 'POST', url: jQuery(form).attr('action'), // 这里修正了ulr为url data: formData }).done(function(response){ // 成功状态处理 jQuery(formMessages).removeClass('error'); jQuery(formMessages).addClass('success'); jQuery(formMessages).text(response); // 清空表单 jQuery('#name').val(''); jQuery('#email').val(''); jQuery('#message').val(''); }).fail(function(data){ // 错误状态处理 jQuery(formMessages).removeClass('success'); jQuery(formMessages).addClass('error'); if(data.responseText !== ''){ jQuery(formMessages).text(data.responseText); } else{ jQuery(formMessages).text('An error has occurred'); } }); }); });
2. 验证mailer.php的路径
- 确保
mailer.php文件和你的HTML页面(或者WordPress页面模板文件)在同一个目录下; - 如果
mailer.php在子目录里,比如/assets/mailer.php,那HTML表单的action要改成对应的路径,比如action="/assets/mailer.php"。
3. 调试验证(可选)
提交表单前,打开浏览器的开发者工具(按F12),切换到Network面板,然后点击提交按钮,查看请求的URL是否正确,状态码是否为200。如果还是404,说明路径依然有问题,再仔细核对文件位置。
额外提醒
你的mailer.php目前只是输出Hello world,后续可以完善邮件发送逻辑,但先解决404问题,确保请求能正确到达这个PHP文件再说。
内容的提问来源于stack exchange,提问作者Jumah Mohammadi
相关产品推荐
相关产品推荐

