【问题标题】:How to add AJAX to a page after WordPress get_header()如何在 WordPress get_header() 之后将 AJAX 添加到页面
【发布时间】:2015-08-18 19:42:57
【问题描述】:

我有一个不属于 WordPress 的页面,除了我从 WordPress 库调用 get_header() 和 get_footer() 以便将其包装在与其他页面相同的主题中。

但是,在调用 get_header() 之后,如果我尝试调用任何类型的 AJAX,它就会被忽略。这些块是否只需要在标题标签中添加,还是与 WordPress 有其他冲突?代码如下:

<?php
require_once( $_SERVER['DOCUMENT_ROOT'].DIRECTORY_SEPARATOR."wp-config.php" );
global $current_user;
get_currentuesrinfo();
get_header();
global $wpdb;
?>

<script type="text/javascript">
<!--
$(function () {
    $('#AdminForm').on('submit', function(e) {
        e.preventDefault();
        $.ajax({
            type: 'post',
            url: 'ajax/save.php',
            data: $('#AdminForm').serialize();
            success: function () {
                alert('form was saved');
                }
            });
        });
    });
//-->
</script>

<form name="AdminForm" id="AdminForm">
<input type="submit" type="submit" value="Save" />
</form>

<?php
get_footer();
?>

在 Chrome 开发者工具中发现如下错误:

未捕获的类型错误:$ 不是函数

是否有一种不会与 WordPress 冲突的正确方法?

谢谢!

【问题讨论】:

  • 你试过jQuery而不是$吗?
  • 是的,我做到了。我一直在尝试所有我能找到的“替代”方法来调用它......到目前为止,jQuery、$(document).ready、function($) 和 $(function ())......

标签: php jquery ajax wordpress


【解决方案1】:

这是由于 Wordpress 在 no-conflict mode 中使用了 jQuery。尝试这样设置:

<script type="text/javascript">
jQuery(function($) {
    $('#AdminForm').on('submit', function(e) {
        e.preventDefault();
        $.ajax({
            type: 'post',
            url: 'ajax/save.php',
            data: $('#AdminForm').serialize();
            success: function() {
                alert('form was saved');
            }
        });
    });
});
</script>

现在您可以将标准$ 用于文档就绪功能中的所有功能。

【讨论】:

  • 谢谢,我确实试过了。看起来它摆脱了开发者工具中的“$ 不是函数”错误,但它仍然不起作用。我希望当按钮被按下时,它不应该提交表单,而是打开一个警告框,上面写着“表单已保存”......相反,它只是提交表单。
猜你喜欢
  • 2014-09-05
  • 1970-01-01
  • 2011-02-18
  • 2014-01-22
  • 2014-03-02
  • 2017-02-17
  • 1970-01-01
  • 1970-01-01
  • 2021-04-09
相关资源
最近更新 更多