0

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

这是我正在使用的代码:

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/

我上次使用它时效果很好,所以我对此感到很困惑。

4

3 回答 3

0

因为您在 .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",
于 2013-06-05T17:13:19.877 回答
0

您的 JavaScript(在这种情况下为 $.ajax 函数调用)是客户端,而不是由服务器端的 php 解析。因此,JavaScript 解析器将字符串 "" 解释为文字字符串并且不对其进行解析。要解决这个简单的问题,请使用相对 url 或在可以解析 php 代码的 php 模板中生成 JavaScript。

请记住:代码始终在服务器端解析/呈现,然后发送回客户端的浏览器,然后客户端脚本(在您的情况下为 JavaScript 代码)在浏览器中执行。

于 2013-06-05T17:15:16.833 回答
0

我假设您将您的 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,
    ...
于 2013-06-05T17:17:53.843 回答