如何在wordpress的ajax请求中使用php验证?

魔人布

我制作了一个AJAX用于发送消息的联系表格(自定义)现在我不清楚如何验证表单。

AJAX 请求:

  $("#contact-form").on("submit", function (e) {
    e.preventDefault();
    var action = "contact_form";

    $("#submit, #clear").prop("disabled", true);
    $("#submit").html("Sending");

    $.ajax({
      url: $(this).attr("action"),
      method: "post",
      data: {
        name: $("#name").val(),
        email: $("#email").val(),
        phone: $("#phone").val(),
        subject: $("#subject").val(),
        message: $("#message").val(),
        action: action,
      },

      success: function () {
        $("header").append(
          "<div id='alert' class='alert alert-success alert-dismissible fixed-top' role='alert' >" +
            "<p class='text-center'>Success</p>" +
            "<button type = 'button' class='close' data-dismiss = 'alert'>&times;</button>" +
            "</div>"
        );
        $("#submit, #clear").prop("disabled", false);
        // $("#contact-form input,textarea").val("");
        grecaptcha.reset();
        $("#submit").html("Send");
      },
      error: function () {
        $("header").append(
          "<div id='alert' class='alert alert-danger alert-dismissible fixed-top' role='alert' >" +
            "<p class='text-center'>Error</p>" +
            "<button type = 'button' class='close' data-dismiss = 'alert'>&times;</button>" +
            "</div>"
        );
        $("#submit, #clear").prop("disabled", false);
        grecaptcha.reset();
        $("#submit").html("Send");
      },
    });
  });
});

函数.php:

function contact_form()  // this is the action data variable we set in ajax
{
 

   $name         = $_POST['name'];
   $email        = $_POST['email'];
   $phone        = $_POST['phone'];
   $subject = $_POST['subject'];
   $message  = $_POST['message'];
 
   // preparing parameters for wp_mail();
   $to      = "[email protected]";
      $msg     = "
   Name: $name
   Email: $email
   Phone: $phone
    
   $message
   ";
   

   // sending mail using wp_mail function
    wp_mail($to, $subject, $msg);
       

    wp_die(); // must use wp_die() to avoid unwanted output from wordpress
}

// in first parameter prefix function name with wp_ajax_ 
// this action is required in order to recieve data sent from ajax 
add_action( 'wp_ajax_contact_form', 'contact_form' );
add_action( 'wp_ajax_nopriv_contact_form', 'contact_form' );

现在,当我不尝试使用时,我通常会在ajaxphp 文件中执行预制验证,例如,如果验证码无效,我会将状态附加到GET方法并返回错误。如果有人可以指出我如何在 php 文件中验证并将信息返回到前端的正确方向,还是应该在 js 文件中进行验证?我很困惑,网上有这么多文章,老实说,我不知道在哪里看。
PS 一切正常,只是为了验证它。

英式英语

验证两种方式。JS 验证可实现流畅的 UX,并处理有关有效电子邮件地址、非空字段等的大多数问题。

PHP 验证将确保您的函数不会出错,并允许您进行一些服务器端检查(例如之前未发送过确切消息等)

在 php 中,进行验证检查并准备任何错误的 json 响应,然后在出现错误时回显(而不是继续执行代码)。在 JS 中捕获成功块中的错误 - 现在它不会监听任何响应。

PHP:

if ($errors) {
  echo json_encode(array('status' => 'error', 'message' => 'Your email message has objectionable content'));
  wp_die();
}

if (!wp_mail($to, $subject, $msg)) {
   echo json_encode(array('status' => 'error', 'message' => 'Your email message did not send for some reason'));
  wp_die();
}

echo json_encode(array('status' => 'success');
wp_die();

你的JS

// ajax...
$.ajax({
   ... your props
  dataType: 'json',
  success: function (response) {
    if (response && response.status == 'error'){
      $('errors').html("Sorry, your message did not get sent due to these errors: " + response.message);
     return;
    } else {
      // .. success
     

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在Wordpress插件中使用php发出HTTP请求?

如何在Ajax php文件中使用wordpress函数

如何在Ajax验证中使用WTForms?

如何在表单请求验证中使用忽略规则

如何在Node.js中使用htpasswd验证请求

Laravel:如何在表单请求验证中使用忽略规则

如何在WordPress中使用Ajax使用php和Json显示数据库列

如何在页面模板(wordpress)中使用获取请求

如何在Wordpress插件中使用验证码

如何在 Laravel 中使用 ajax 请求插入 sessionStorage 数据?

如何在Clojurescript中使用试剂执行Ajax请求?

如何在JavaScript中使用JSONP请求执行Ajax调用?

如何在MVC中使用防伪令牌发出Ajax请求

如何在Django中使用ajax发布请求发送文件

如何在Laravel中使用多个验证规则作为多个验证请求的基础

如何在JSON请求正文中使用php变量?

如何在PHP中使用required_if Laravel验证

使用 ajax 请求调用 .php 文件 - wordpress

如何在wordpress中使用自定义php?

如何在Wordpress Gravity Forms中使用PHP创建条目

如何在tag.php中使用wordpress随机发布?

如何在jQuery中使用PHP变量(在Wordpress插件中)

如何在我的HTTP请求中使用带有身份验证的代理?

如何在Django中使用Pytest测试经过身份验证的POST请求

如何在 ruby 中使用身份验证发送 api 请求

如何在Laravel 8中使用请求进行验证?

如何在JSON模式中使用oneOf来验证POST和PATCH请求?

如何在角度离子中使用摘要式身份验证发送请求

如何在改造中使用基本身份验证发送发帖请求?