Php 为什么我会得到一个“;邮政「;404在WP中提交ajax联系人表单时出错
我正在为WordPress主题构建一个ajax联系人表单,在提交表单时遇到了一个问题;控制台一直说它无法检索我的mail-form.php文件(用于格式化电子邮件),而我非常确定我的url是正确的 以下是我正在使用的代码:Php 为什么我会得到一个“;邮政「;404在WP中提交ajax联系人表单时出错,php,jquery,ajax,wordpress,contact-form,Php,Jquery,Ajax,Wordpress,Contact Form,我正在为WordPress主题构建一个ajax联系人表单,在提交表单时遇到了一个问题;控制台一直说它无法检索我的mail-form.php文件(用于格式化电子邮件),而我非常确定我的url是正确的 以下是我正在使用的代码: jQuery.ajax({ type: "POST", url: "<?php echo get_template_directory_uri(); ?>/mail-form.php", cache: false, data: "n
jQuery.ajax({
type: "POST",
url: "<?php echo get_template_directory_uri(); ?>/mail-form.php",
cache: false,
data: "name=" + name + "&email=" + email + "&message=" + message,
success: function (html) {
jQuery("#contact-form").slideUp("slow");
jQuery("#contact-form").after("<p><span class='center' id='send-message'>Your message has been sent! We will reply shortly!</span></p>");
jQuery("#send-message").fadeIn("slow");
}
});
jQuery.ajax({
类型:“POST”,
url:“/mail form.php”,
cache:false,
数据:“name=“+name+”&email=“+email+”&message=“+message,
成功:函数(html){
jQuery(“联系方式”).slideUp(“慢”);
jQuery(“#联系表单”)。在(您的消息已发送后!我们将很快回复!”;
jQuery(“发送消息”).fadeIn(“慢”);
}
});
这里是表单的链接
上次我使用它时,它工作得很好,所以我对此感到非常困惑。因为您在.js文件中使用了PHP(第56行):
在本例中,您的JavaScript,$.ajax函数调用是客户端,而不是由服务器端的php解析。因此,JavaScript解析器将字符串“”解释为文本字符串,而不进行分析。要解决这个问题,请使用相对url或在php模板中生成JavaScript,该模板可以解析php代码
请记住:代码总是在服务器端解析/呈现,发送回客户端浏览器,然后客户端脚本(在您的情况下是JavaScript代码)在浏览器中执行。我希望您将JavaScript移到.js文件中,但是除非您指示http服务器像php一样处理JavaScript文件,否则其中的任何php都只是文本 将函数移回php文件或(更好的方法)将URL作为属性传递,例如:
// PHP FILE
<form action="URLGOESHERE" id="form_id">
...
// JAVASCRIPT FILE
var url = $("#form_id").attr("action");
jQuery.ajax({
type: "POST",
url: url,
...
//PHP文件
...
//JAVASCRIPT文件
var url=$(“表单id”).attr(“操作”);
jQuery.ajax({
类型:“POST”,
url:url,
...
非常确定您的URL是正确的吗?反复检查,直到您完全确定为止。您可以查看生成的页面源,查看URL:
在客户端的外观,然后尝试自己通过浏览器的地址栏点击该URL。您还可以查看服务器的错误日志,查看发生404时请求了什么。W“主模板”是什么意思?@Designer17,把它放在你的页脚中。非常感谢!这解决了问题!:)
var TEMPLATE_URI = "<?php echo get_template_directory_uri(); ?>";
url: TEMPLATE_URI + "/mail-form.php",
// PHP FILE
<form action="URLGOESHERE" id="form_id">
...
// JAVASCRIPT FILE
var url = $("#form_id").attr("action");
jQuery.ajax({
type: "POST",
url: url,
...