使用AJAX调用php函数时WordPress 404

时间:2016-11-09 作者:Denis Wells

我不熟悉WP和php,但对AJAX非常有经验。我试图使用jQuery调用一个php函数,该函数利用WP Twilio Core plugin. 我有斜纹呢。自定义主题目录中的php文件,以及自定义jQuery。

一些stackoverflow回答意味着您必须对admin\\u AJAX进行所有AJAX调用。php,然后为您委托php函数。每次我试图达到它,我都会收到404。谢谢

HTML

<!-- IN HEADER FILE -->
<?php
  add_action(\'wp_ajax_mycustomfunc\', \'twilioSMS\');
?>

<form>
  <input size="50" type="text" name="number_to" placeholder="+16175551212" id="number_to" class="regular-text" />

  <script type="text/javascript">
    var ajax_url = "<?php echo admin_url(\'admin_ajax.php\'); ?>"
  </script>

  <?php wp_nonce_field( \'twl-test\' ); ?>
  <p><input id="twilio_button" type="submit" class="button-primary" value="Send Message" /></p>
</form>
JS公司

$("#twilio_button").click(function(e) {
    e.preventDefault();
    var number_to = $("#number_to").val();
    var data = {
        "action": "twilioSMS",
        "number": number_to
    };

    $.post(ajax_url, data)
    .done(function(res) {
        console.log("RES", res);
    })
    .fail(function(err) {
        console.log("ERR", err);
    });
});
PHP(甚至还没到这里)

<?php
  echo "<script type=\'text/javascript\'>console.log(\'yo\');</script>";

  if(isset($_POST["number_to"])) {
    $args = array(
      "number_to" => $_POST["number_to"],
      "message" => "Hello",
    );

  echo twl_send_sms($args);
  exit;
   }
?>

1 个回复
最合适的回答,由SO网友:scott 整理而成

当我刚接触WP和PHP时,当我意识到PHP 代表。“PHP超文本预处理器。”当然,递归首字母缩略词很酷,但“预处理器”让我大吃一惊。换句话说,当提供页面时,PHP首先运行,生成HTML,然后由浏览器解释。因此,您不能将PHP文件加载到HTML文档中并期望进行任何交互。它已经完成了它的工作,并在加载页面时转到了工具栏。

解决方案是什么?AJAX(但你知道这一点)。开始使用WP和AJAX的最好方法是阅读Codex.