将PHP变量传递给Javascript并返回给PHP?

时间:2019-02-14 10:02:06

标签: javascript php

我有一个名为$author_email的PHP变量,我想将该变量传递给我在按钮单击时通过HTML调用的Javascript函数onclick="searchEmail();",可以将变量传递给Javascript而是这样做吗? onclick="searchEmail('<?php echo $author_email?>');"

然后我想在我的javascript函数中使用它,以将其传递给通过AJAX调用的PHP函数。

这是Javascript函数searchEmail

function searchEmail() {
  var admin_url = admin_ajax.ajaxurl;
  $.ajax({
    type: "POST",
    url: admin_url,
    datatype: "html",
    data: {'action': 'search_notify_email'},
    success: function() {
      searchNotification();
    },error:function() {
      searchNotificationError();
    }
  });
}

JavaScript触发了PHP函数search_notify_email 我现在想将变量传递给PHP函数。怎么做? 看起来像这样:

function search_notify_email(){
    $to = $author_email;
    $subject = "Test title";
    $message = "message message message message message message message ";
    $headers[] = 'From: Test <noreply@domain.com>';

    if( wp_mail($to, $subject, $message, $headers) ){
      // Success
    } else {
      // Error
    }
    die();
}
add_action('wp_ajax_nopriv_search_notify_email', 'search_notify_email');
add_action('wp_ajax_search_notify_emaill', 'search_notify_email');

您可以看到我的目标是在最后一个PHP函数中使用$author_email。我不能直接传递它的原因是因为此变量取决于单击哪个按钮。

1 个答案:

答案 0 :(得分:3)

更改searchEmail以使用参数:

function searchEmail(email) {
  var admin_url = admin_ajax.ajaxurl;
  $.ajax({
    type: "POST",
    url: admin_url,
    datatype: "html",
    data: {'action': 'search_notify_email', email: email},
    success: function() {
      searchNotification();
    },error:function() {
      searchNotificationError();
    }
  });
}

然后更改控制器以使用该参数。

function search_notify_email(){
    $to = $_POST['email'];
    $subject = "Test title";
    $message = "message message message message message message message ";
    $headers[] = 'From: Test <noreply@domain.com>';

    if( wp_mail($to, $subject, $message, $headers) ){
      // Success
    } else {
      // Error
    }
    die();
}

可能还有一种更WordPressy的方式来获取参数,但我不知道WordPress。