Javascript 带有AJAX的联系人表单在Wordpress中不起作用
我在一个Wordpress网站上工作,我正在尝试创建一个表单(使用ajax调用),该表单将显示在每个人的产品页面上。我在其他服务器上也试过,效果很好,但当我将代码集成到Wordpress页面中时,效果不好。我使用的是Woocomece,所以我试图修改的php文件是“content single product.php” 我的代码: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; //客户端的简单验证 //循环遍历每个字段,我们只需将无效字
$(文档).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);
}
}