Javascript 带有AJAX的联系人表单在Wordpress中不起作用

Javascript 带有AJAX的联系人表单在Wordpress中不起作用,javascript,php,jquery,ajax,wordpress,Javascript,Php,Jquery,Ajax,Wordpress,我在一个Wordpress网站上工作,我正在尝试创建一个表单(使用ajax调用),该表单将显示在每个人的产品页面上。我在其他服务器上也试过,效果很好,但当我将代码集成到Wordpress页面中时,效果不好。我使用的是Woocomece,所以我试图修改的php文件是“content single product.php” 我的代码: $(文档).ready(函数(){ $(“#提交”_btn”)。单击(函数(){ var=true; //客户端的简单验证 //循环遍历每个字段,我们只需将无效字

我在一个Wordpress网站上工作,我正在尝试创建一个表单(使用ajax调用),该表单将显示在每个人的产品页面上。我在其他服务器上也试过,效果很好,但当我将代码集成到Wordpress页面中时,效果不好。我使用的是Woocomece,所以我试图修改的php文件是“content single product.php”

我的代码:


$(文档).ready(函数(){
$(“#提交”_btn”)。单击(函数(){
var=true;
//客户端的简单验证
//循环遍历每个字段,我们只需将无效字段的边框颜色更改为红色
$(“#联系人#表单输入[required=true],#联系人#表单文本区域[required=true])。每个(函数(){
$(this.css('border-color','');
if(!$.trim($(this.val()){//如果此字段为空
$(this.css('border-color','red');//将边框颜色更改为红色
继续=false;//设置不继续标志
}
//检查无效电子邮件
var email\u reg=/^([\w-\.]+@([\w-]+\.)+[\w-]{2,4})?$/;
if($(this.attr(“type”)==“email”&&!email注册测试($.trim($(this.val())){
$(this.css('border-color','red');//将边框颜色更改为红色
继续=false;//设置不继续标志
}	
});
如果(继续)//一切看起来都很好!继续。。。
{
//获取要发送到服务器的输入字段值数据
post_数据={
'user_email':$('input[name=email]')。val(),
'电话号码':$('input[name=telefon]')。val(),
};
//Ajax将数据发布到服务器
$.post(“*php文件的路径*”,post_数据,函数(响应){
if(response.type=='error'){//从服务器加载json数据并输出消息
输出=''+响应。文本+'';
}否则{
输出=''+响应。文本+'';
//重置所有输入字段中的值
$(“#联系人#表单输入[required=true],#联系人#表单文本区域[required=true]”).val(“”);
$(“#contact_form#contact_body”).slideUp();//成功后隐藏表单
}
$(“#联系形式#联系结果”).hide().html(输出).slideDown();
}“json”);
}
});
//重置以前设置的边框颜色并隐藏.keyup()上的所有消息
$(“#contact#u form input[required=true],#contact#u form textarea[required=true]”).keyup(function(){
$(this.css('border-color','');
$(“#结果”).slideUp();
});
});	    	
标题文本

描述文本

电话: 电邮:
我想你在找这个:

在代码中,您需要添加操作日志数据:

post_data = {
  'user_email'  : $('input[name=email]').val(), 
  'phone_number'    : $('input[name=telefon]').val(), 
  'action' : 'my_custom_send_mail',
  'nonce' : '<?php wp_create_nonce('mycustom_mail_form_nonce'); ?>'
};

好的,我想我越来越接近了……现在脚本的行为实际上就像ajax一样,但是如果像你所说的那样插入“php文件的路径”的话,那么我将在哪里编写php文件的路径呢?它实际上发送了我的电子邮件。非常感谢。您不需要拥有自己的php文件。只需在检查nonce后立即包含sendmail函数。(在这里我添加了“//您的发送邮件功能”)。我在脚本中添加了整个功能。很抱歉我缺席了,我刚刚“恢复工作”。脚本不起作用。。。在我提交后,ajax向我显示“未定义”,而不是我想要的消息。。。
add_action( 'wp_ajax_my_custom_send_mail', 'my_custom_send_mail_callback' );
add_action( 'wp_ajax_nopriv_my_custom_send_mail', 'my_custom_send_mail_callback' );

function my_custom_send_mail_callback(){

  if(!check_ajax_referer( 'mycustom_mail_form_nonce', 'nonce' )){
    $output = json_encode(array('type'=>'error', 'text' => 'Something went wrong!'));
    die($output);
  }

  $to_email     = "email@email.com";
  $user_email   = sanitize_email($_POST["user_email"]);
  $phone_number = filter_var($_POST["phone_number"], FILTER_SANITIZE_NUMBER_INT);

  if(!is_email($user_email)){
    $output = json_encode(array('type'=>'error', 'text' => 'Please enter a valid email!'));
    die($output);
  }
  if(!filter_var($phone_number, FILTER_SANITIZE_NUMBER_FLOAT)){ //check for valid numbers in phone number field
    $output = json_encode(array('type'=>'error', 'text' => 'Enter only digits in phone number'));
    die($output);
  }

  //email body
  $subject = "Client nou ! - Telefon: ". $phone_number;
  $message_body = "\r\nNumar de telefon : ". $phone_number."\r\nClientul este interesat de urmatorul produs : ". $url;

  //proceed with PHP email.
  $headers = 'From: '.$user_email.'' . "\r\n" .
  'X-Mailer: PHP/' . phpversion();

  $send_mail = wp_mail($to_email, $subject, $message_body, $headers);

  if(!$send_mail){
    $output = json_encode(array('type'=>'error', 'text' => 'Could not send mail! Please check your PHP mail configuration.'));
    die($output);
  }else{
    $output = json_encode(array('type'=>'message', 'text' => '<div style="color:#999999; font-size:12px;">The order was sent. In few moments we will contact you at the phone number <strong>'.$phone_number .'</strong>!</div>'));
    die($output);
  }
}