Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/227.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php wordpress管理ajax始终返回0_Php_Jquery_Wordpress_Phpmailer_Admin Ajax - Fatal编程技术网

Php wordpress管理ajax始终返回0

Php wordpress管理ajax始终返回0,php,jquery,wordpress,phpmailer,admin-ajax,Php,Jquery,Wordpress,Phpmailer,Admin Ajax,我知道我的问题被问了很多次,我阅读了所有关于这个问题的讨论,但我没有找到正确的答案 我的问题是,admin ajax请求和ajax调用总是在wordpress上返回0。 我的代码是: 前端呼叫 $.ajax({ url: cubetechform_ajax.ajax_url, type: "POST", data: { action: 'cubetech_contact_form_send_email', name: name,

我知道我的问题被问了很多次,我阅读了所有关于这个问题的讨论,但我没有找到正确的答案

我的问题是,
admin ajax
请求和
ajax
调用总是在wordpress上返回
0
。 我的代码是:

前端呼叫

$.ajax({
   url: cubetechform_ajax.ajax_url,
   type: "POST",
    data: {
        action: 'cubetech_contact_form_send_email',
        name: name,
        phone: phone,
        email: email,
        message: message
    },
    cache: false,
    success: function(response) {
        console.log(response);
    },
    error: function(XMLHttpRequest, ajaxOptions, thrownError) {                     
        //console.log(XMLHttpRequest.status + '<br/>' + ajaxOptions + '<br/>' + thrownError);               
    },
});
$.ajax({
url:cubetechform_ajax.ajax_url,
类型:“POST”,
数据:{
行动:“cubetech\u联系人\u表格\u发送\u电子邮件”,
姓名:姓名,,
电话:电话,,
电邮:电邮,,
信息:信息
},
cache:false,
成功:功能(响应){
控制台日志(响应);
},
错误:函数(XMLHttpRequest、ajaxOptions、thrownError){
//log(XMLHttpRequest.status+'
'+ajaxOptions+'
'+thrownError); }, });
后端

/*
 * Action hooks
 */
function __construct() {

    // Enqueue plugin styles and scripts
    add_action( 'wp_enqueue_scripts', array( $this, 'enqueue_cubetech_form_scripts' ) );

    // Setup Ajax action hook
    add_action( 'wp_ajax_cubetech_send_email', array( $this, 'cubetech_send_email' ) );
    add_action( 'wp_ajax_nopriv_cubetech_send_email', array( $this, 'cubetech_send_email' ) );

    //$this->cubetech_send_email();
}

/**
 * Register plugin styles and scripts
 */
public function register_contactme_scripts() {
    wp_register_script( 'contactme_script', get_template_directory_uri() . '/js/contact_me.js', array('jquery','bootstrapValidationScript'), '', true);
}   
/**
 * Enqueues plugin-specific scripts.
 */
public function enqueue_cubetech_form_scripts() {       
    wp_enqueue_script( 'contactme_script', plugins_url( '/js/contact_me.js', __FILE__ ), array('jquery','bootstrapValidationScript'), '', true);
    //wp_enqueue_script( 'contactme-script' );
    wp_localize_script( 'contactme_script', 'cubetechform_ajax', array( 'ajax_url' => admin_url('admin-ajax.php')) );
}   


public function cubetech_send_email() { 
    require_once ABSPATH . WPINC . '/class-phpmailer.php'; 
    require_once ABSPATH . WPINC . '/class-smtp.php';

    $name = strip_tags(htmlspecialchars($_POST['name']));
    $email_address = strip_tags(htmlspecialchars($_POST['email']));
    $phone = strip_tags(htmlspecialchars($_POST['phone']));
    $message = strip_tags(htmlspecialchars($_POST['message']));

    // definisco il messaggio formattato in HTML
    $email_body = '<html><body>';
    $email_body .= '<p>Nome: '.$name.'<br>';
    $email_body .= 'N. Telefono: '.$phone.'<br>';
    $email_body .= 'Richiesta: '.$message.'</p>'.'<br>';
    $email_body .= '</body></html>';

    // definisco il messaggio formattato in HTML
    $email_body = '<html><body>';
    $email_body .= '<p>Nome: '.$name.'<br>';
    $email_body .= 'N. Telefono: '.$phone.'<br>';
    $email_body .= 'Richiesta: '.$message.'</p>'.'<br>';
    $email_body .= '</body></html>';

    $to = get_option('admin_email');
    $subject = "Richiesta da: ". $email_address;

    $mail = new PHPMailer();

    $mail->IsSMTP(); // set mailer to use SMTP
    $mail->Host = "smtps.aruba.it";  // specify main and backup server
    //$mail->SMTPDebug = 3;  // debugging: 1 = errors and messages, 2 = messages only
    $mail->SMTPAuth = true;     // turn on SMTP authentication
    $mail->SMTPSecure = 'ssl';
    $mail->Port = 465;
    $mail->Username = "info@cubetech.it";  // SMTP username
    $mail->Password = "*******"; // SMTP password

    $mail->From = "info@cubetech.it";
    $mail->FromName = "Cube Tech Bologna";
    $mail->AddAddress("info@cubetech.it", "Cube Tech Bologna" );  // name is optional
    $mail->AddReplyTo("info@cubetech.it", "Reply");
    $mail->AddCC($email_address); 

    $mail->IsHTML(true);  // set email format to HTML

    $mail->SetFrom("info@cubetech.it", "Cube Tech Bologna");
    $mail->Subject = $subject;
    $mail->Body = $email_body;

    $mail->AddAddress("info@cubetech.it");

    $error = '';

    if(!$mail->Send()) {
        $error = 'Mail error: '.$mail->ErrorInfo; 
        echo $error;
        exit();
        die();
    } else {
        $error = 'ok';
        echo $error;
        exit();
        die();
    }
}
/*
*行动挂钩
*/
函数_u构造(){
//将插件样式和脚本排队
添加动作('wp_排队_脚本',数组($this,'enqueue_cubetech_form_脚本');
//设置Ajax操作挂钩
添加动作('wp_ajax_cubetech_send_email',数组($this,'cubetech_send_email'));
添加动作('wp_ajax_nopriv_cubetech_send_email',数组('this,'cubetech_send_email');
//$this->cubetech_send_email();
}
/**
*注册插件样式和脚本
*/
公用函数寄存器\联系人\脚本(){
wp_register_script('contactme_script',get_template_directory_uri()。/js/contact_me.js',数组('jquery','bootstrapValidationScript'),'',true);
}   
/**
*为特定于插件的脚本排队。
*/
公用函数排队_cubetech_form_scripts(){
wp_enqueue_script('contactme_script',plugins_url('/js/contact_me.js',__文件__),数组('jquery','bootstrapValidationScript'),'',true);
//wp_排队_脚本(“联系人脚本”);
wp_本地化_脚本('contactme_script','cubetechform_ajax',数组('ajax_url'=>admin_url('admin-ajax.php'));
}   
公用函数cubetech_send_email(){
需要_once ABSPATH.WPINC'/class phpmailer.php';
需要_once ABSPATH.WPINC'/class smtp.php';
$name=strip_标签(htmlspecialchars($_POST['name']);
$email\u address=strip\u标签(htmlspecialchars($\u POST['email']);
$phone=strip_标签(htmlspecialchars($_POST['phone']);
$message=strip_标记(htmlspecialchars($_POST['message']);
//在HTML中定义信息格式
$email_body='';
$email_body.='Nome:'.$name.'
'; $email_body.='N.Telefono:'.$phone.'; $email_body.='Richiesta:'.$message.

'。
'; $email_body.=''; //在HTML中定义信息格式 $email_body=''; $email_body.='Nome:'.$name.'
'; $email_body.='N.Telefono:'.$phone.'; $email_body.='Richiesta:'.$message.

'。
'; $email_body.=''; $to=get_选项(“管理电子邮件”); $subject=“Richiesta da:”.$email\u地址; $mail=new PHPMailer(); $mail->IsSMTP();//设置邮件程序以使用SMTP $mail->Host=“smtps.aruba.it”;//指定主服务器和备份服务器 //$mail->SMTPDebug=3;//调试:1=错误和消息,2=仅消息 $mail->SMTPAuth=true;//打开SMTP身份验证 $mail->SMTPSecure='ssl'; $mail->Port=465; $mail->Username=”info@cubetech.it“;//SMTP用户名 $mail->Password=“*******”;//SMTP密码 $mail->From=”info@cubetech.it"; $mail->FromName=“Cube Tech Bologna”; $mail->AddAddress(“info@cubetech.it“,“Cube Tech Bologna”);//名称是可选的 $mail->AddReplyTo(“info@cubetech.it“,”答复“); $mail->AddCC($email\u地址); $mail->IsHTML(true);//将电子邮件格式设置为HTML $mail->SetFrom(“info@cubetech.it“,“立方体科技博洛尼亚”); $mail->Subject=$Subject; $mail->Body=$email\u Body; $mail->AddAddress(“info@cubetech.it"); $error=''; 如果(!$mail->Send()){ $error='Mail error:'。$Mail->ErrorInfo; echo$错误; 退出(); 模具(); }否则{ $error='ok'; echo$错误; 退出(); 模具(); } }

我尝试了我读到的所有关于
die()
退出()
$mail=new PHPMailer()
$mail=新的PHPMailer(true)和其他很多。ajax调用总是存在问题,因为如果我尝试直接调用函数
cubetech\u send\u email()
,它可以完美地工作,并返回ok和phpmailer send。我用服务器电子邮件在本地主机上尝试了这一切,一切都很完美。。有人能帮我解决吗?谢谢你

你的钩子应该是这样的:

// Setup Ajax action hook
add_action( 'wp_ajax_cubetech_contact_form_send_email', array( $this, 'cubetech_send_email' ) );
add_action( 'wp_ajax_nopriv_cubetech_contact_form_send_email', array( $this, 'cubetech_send_email' ) );
在您的数据对象中,当执行ajax时,将“cubetech\u contact\u form\u send\u email”作为操作。钩子是这样工作的:wp\u ajax\ujax(action)

在我尝试一切的无数天之后。。。everycode,在那里我阅读了所有的帖子和解决方案,我找到了解决方案。。。代码中没有任何错误。。。一切都很好。问题是当我将localhost wordpress传递给hosting时。我不知道为什么,但也许在这个过程中有些事情不顺利。。。我在主机上删除数据库和目录并重新安装了所有内容。。。我希望这可以帮助有此问题的用户

您的观察是正确的,但问题仍然存在。。。我同意你的建议,但从不改变