我正在为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");
}
});
这是一个链接到表单…http://wordpress-dev.designer17.com/contact/
上次我使用它的时候它工作得很好,所以我很困惑。
因为您在.js文件中使用PHP(第56行):
url: "<?php echo get_template_directory_uri(); ?>/mail-form.php",
你能做的就是把这个添加到你的主模板中:
var TEMPLATE_URI = "<?php echo get_template_directory_uri(); ?>";
然后在.js文件中使用:
url: TEMPLATE_URI + "/mail-form.php",
你的JavaScript, $。在这种情况下,Ajax函数调用是客户端,而不是由php解析,php是服务器端。因此,JavaScript解析器将字符串"解释为文字字符串,而不进行解析。要解决这个问题,可以使用一个相对url,或者在一个可以解析php代码的php模板中生成JavaScript。
请记住:代码总是在服务器端解析/呈现,然后发送回客户端浏览器,然后客户端脚本(在您的情况下是JavaScript代码)在浏览器中执行。
我想你把你的javascript移动到。js文件,然而,除非你指示你的http服务器处理javascript文件作为php任何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,
...