【问题标题】:Wordpress - ajax request to custom php scriptWordpress - 对自定义 php 脚本的 ajax 请求
【发布时间】:2019-06-05 12:56:14
【问题描述】:

我在 Wordpress 中的电子邮件表单有问题。我创建了一个自定义表单并添加了 jQuery 脚本来发送 ajax 请求。当我填写表单并单击提交时,表单返回错误 404。Ajax 将发布请求发送到 contact.php 文件,但我的脚本找不到该文件。

我将 contact.php 文件添加到 Wordpress 根目录和我的主题目录,但我有同样的错误,即

http://domainname/contact.php not found

当然文件contact.php存在于根目录。

我的请求代码:

function onSubmit(token) {
    $.ajax({
        url: 'contact.php',
        method: 'POST',
        data: $('#contact').serialize(),
        dataType: 'json',
        success: function(response) {
            if (response.success == true) {
                $('#contact-form').modal('hide');
            } else {
                alert(response.msg);
            }

            grecaptcha.reset();
        },
        error: function() {
            $('#form-error-modal').modal('show');

            grecaptcha.reset();
        }
    });
};

我尝试了其他解决方案,但还是一样。当我将contact.php脚本移动到没有wordpress的外部服务器时,一切正常,但对我来说不是解决方案。

有什么办法,我该如何解决这个问题?

【问题讨论】:

  • 如果您收到 404 错误,可能是由于以下两种情况之一:1. 您的文件路径错误或 2. 您的网络服务器设置或 .htaccess 设置为您提供404.跨度>
  • 嗨@Azer我认为这是.htaccess的问题,contact.php文件的路径是好的。
  • 根据您的设置、WordPress 或安全插件,可能会阻止您在根文件夹中打开自定义脚本。尝试创建一个子文件夹并将脚本放在那里。可能会奏效。

标签: php wordpress


【解决方案1】:

将完整的网址添加到文件中,而不仅仅是contact.php。不过最好用wordpres ajax

或者

function onSubmit(token) {
    $.ajax({
        url: ajax_init.ajax_url,
        method: 'POST',
        data: {
          action : 'custom_contact_form',
          form   : $('#contact').serialize()
        },
        dataType: 'json',
        success: function(response) {
            if (response.success == true) {
                $('#contact-form').modal('hide');
            } else {
                alert(response.msg);
            }
            grecaptcha.reset();
        },
        error: function() {
            $('#form-error-modal').modal('show');
            grecaptcha.reset();
        }
    });
};

在你的入队函数中:

  wp_localize_script('your-handle', 'ajax_init', array(
      'ajax_url' => admin_url('admin-ajax.php') 
    )
  );

这里处理请求

add_action('wp_ajax_custom_contact_form', 'custom_contact_form');
add_action('wp_ajax_nopriv_custom_contact_form', 'custom_contact_form'); // Allow front-end submission

function custom_contact_form() {
  $form = $_REQUEST['form'];
  parse_str($form, $post);
  // your logic here
}

【讨论】:

  • 嗨天空 :) 感谢您的回答。我将完整的 url 添加到 ajax 请求,但我有同样的 404 错误。我认为唯一的解决方案是自定义插件。
猜你喜欢
  • 2016-04-15
  • 1970-01-01
  • 1970-01-01
  • 2016-08-05
  • 2011-11-06
  • 2014-03-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多