如何在WordPress中加载Ajax

16 浏览
0 Comments

如何在WordPress中加载Ajax

我对使用jQuery的普通方式使用ajax很熟悉。

我已经玩了一段时间,但不明白Wordpress需要什么来使其工作...

这里的内容是从某个教程或文章中取得的。

这是在functions.php(子主题中):

代码以加载jquery-工作正常

代码以加载javascript文件-工作正常

启用AJAX:

function add_ajax()

{

wp_localize_script(

'function',

'ajax_script',

array( 'ajaxurl' => admin_url( 'admin-ajax.php' ) ) );

}

$dirName = get_stylesheet_directory(); // 使用此来获取子主题目录

require_once ($dirName."/ajax.php");

add_action("wp_ajax_nopriv_function1", "function1"); // ajax.php中的函数

add_action('template_redirect', 'add_ajax');

jQuery本身正在加载和工作良好。

我尝试了一些基本的ajax,如下所示:

jQuery(document).ready(function($){

$('a.link').click(function(){

$.ajax({

url: ajax_script.ajaxurl,

data: ({action : 'function1'}),

success: function(data){

$('#result').html(data);

}

});

return false;

});

});

除此之外,我不知道如何测试它是否已正确加载...

在firebug中出现此错误:

ReferenceError: ajax_script is not defined

url: ajax_script.ajaxurl,

0
0 Comments

在WordPress中加载Ajax的方法

在WordPress中,加载Ajax通常需要在脚本中指定Ajax请求的URL。然而,由于WordPress的URL结构和文件路径的特殊性,直接在脚本中指定URL可能会导致问题。

解决这个问题的方法是使用wp_localize_script函数来传递URL。具体的操作步骤如下:

1. 在需要加载Ajax的地方,使用下面的代码来调用wp_localize_script函数,并传递一个包含ajax_url的数组:

wp_localize_script( some_handle, 'admin_url', array('ajax_url' => admin_url( 'admin-ajax.php' ) ) );

2. 在JavaScript脚本中,可以通过admin_url.ajax_url来调用传递的URL:

admin_url.ajax_url

通过以上步骤,就可以成功加载Ajax并指定正确的请求URL。这种方法可以避免直接在脚本中指定URL时可能出现的问题。

希望以上内容对你在WordPress中加载Ajax有所帮助!

0
0 Comments

问题的出现原因:

在Wordpress中加载Ajax时,需要使用ajaxurl变量来引用admin-ajax.php文件。然而,这个变量在前端页面上没有声明。为了解决这个问题,可以在主题的header.php文件中添加以下代码来声明这个变量:

<script type="text/javascript">
    var ajaxurl = "<?php echo admin_url('admin-ajax.php'); ?>";
</script>

解决方法:

根据Wordpress的AJAX文档所描述的,有两个不同的钩子函数可以使用 - wp_ajax_(action)和wp_ajax_nopriv_(action)。它们的区别如下:

- wp_ajax_(action):如果Ajax调用是在后台管理面板中发起的,则触发此钩子函数。

- wp_ajax_nopriv_(action):如果Ajax调用是在网站前端发起的,则触发此钩子函数。

其他相关内容请参考上面提供的文档链接。祝编码愉快!

以下是一个可能有效的示例代码(未经测试):

前端代码:

<script type="text/javascript">
    jQuery.ajax({
        url: ajaxurl,
        data: {
            action: 'my_action_name'
        },
        type: 'GET'
    });
</script>

后端代码:

<?php
    function my_ajax_callback_function() {
        // 在这里实现Ajax函数
    }
    add_action( 'wp_ajax_my_action_name', 'my_ajax_callback_function' );    // 如果从后台管理面板调用
    add_action( 'wp_ajax_nopriv_my_action_name', 'my_ajax_callback_function' );    // 如果从前端页面调用
?>

更新:

尽管这是一个旧的答案,但它似乎仍然受到许多人的赞同和喜爱,这非常好!我认为这对一些人可能会有所帮助。

Wordpress有一个名为wp_localize_script的函数。该函数的第三个参数是一个数组,用于存放翻译等信息,例如:

var translation = {
    success: "Success!",
    failure: "Failure!",
    error: "Error!",
    ...
};

通过这种方式,可以将一个对象加载到HTML的标签中。可以按以下方式使用它:

后端代码:

wp_localize_script( 'FrontEndAjax', 'ajax', array(
    'url' => admin_url( 'admin-ajax.php' )
) );

这种方法的好处是可以在主题和插件中使用,因为不需要将ajax URL变量硬编码到主题中。

在前端页面上,现在可以通过ajax.url来访问URL,而不是之前示例中的ajaxurl

0
0 Comments

问题背景:在WordPress中加载Ajax时遇到了一些问题。

问题原因:1.代码中的ajax_script未定义,需要更改为url: ajaxurl

2.可能在其他文件中已经定义了function1(),在上面的代码中没有看到。

3.需要学习如何使用Firebug调试Ajax调用,网络和控制台选项卡将成为你的朋友。在PHP方面,print_r()var_dump()将成为你的朋友。

4.在前端页面中ajaxurl是未定义的,它只在后台管理面板中定义。如果你想在前端页面中定义它,在header.php文件中添加以下代码即可:<script type="text/javascript">var ajaxurl = "<?php echo admin_url('admin-ajax.php'); ?>";</script>

解决方法:根据上面的问题原因进行相应的修改和调试即可。

文章标题:如何在WordPress中加载Ajax

首先,你应该仔细阅读这个页面:http://codex.wordpress.org/AJAX_in_Plugins

其次,ajax_script未定义,所以你应该将其更改为:url: ajaxurl。我没有在上面的代码中看到你的function1(),但你可能已经在其他文件中定义了它。

最后,学习如何使用Firebug调试Ajax调用,网络和控制台选项卡将成为你的朋友。在PHP方面,print_r()var_dump()将成为你的朋友。

在前端页面中,ajaxurl是未定义的,它只在后台管理面板中定义。如果你想在前端页面中定义它,在header.php文件中添加以下代码即可:<script type="text/javascript">var ajaxurl = "<?php echo admin_url('admin-ajax.php'); ?>";</script>

根据上面的问题原因进行相应的修改和调试即可。

0