Php 为什么我会得到一个“;邮政「;404在WP中提交ajax联系人表单时出错

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

我正在为WordPress主题构建一个ajax联系人表单,在提交表单时遇到了一个问题;控制台一直说它无法检索我的mail-form.php文件(用于格式化电子邮件),而我非常确定我的url是正确的

以下是我正在使用的代码:

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,
    ...