我有一个导航栏,里面有类别。当我将鼠标悬停在一个类别上时,我想使用ajax查询最近的3篇文章。
html标记
<ul>
<li id="alabama">Alabama</li>
<li id="banana">Banana</li>
<li id="bible">Bible</li>
</ul>
<div id="main"></div>
ajax调用
$( "#alabama" ).click(function() {
var ajaxurl = "<?php echo admin_url(\'admin-ajax.php\'); ?>";
$.post(
ajaxurl,
{
\'action\' : \'fetch_posts\',
\'fetch\' : \'alabama\',
},
function(output){
$(\'#main\').html(output);
});
});
enter code here
函数中的php。php
function import_post() {
if($_REQUEST[\'fetch\'] == \'alabama\'){
$query_args = array(
\'post_type\' => \'post\',
\'tax_query\' => array(
\'relation\' => \'AND\',
array(
\'taxonomy\' => \'category\',
\'field\' => \'slug\',
\'terms\' => array( \'news\' ),
),
array(
\'taxonomy\' => \'category\',
\'field\' => \'slug\',
\'terms\' => array( \'alabama\' ),
),
),
);
$the_query = new WP_Query( $query_args );
if ( $the_query->have_posts() ) :
while ( $the_query->have_posts() ) : $the_query->the_post();
$return_str.= \'<div class="col-md-3">\';
$return_str.= \'<li>\' . get_the_title() . \'</li>\';
$return_str.=\'</div>\';
endwhile;
wp_reset_postdata();
else :
$return_str.= \'No posts found\';
endif;
}
echo $return_str;
die;
}
add_action(\'wp_ajax_fetch_posts\', \'fetch_posts\');
add_action(\'wp_ajax_nopriv_fetch_posts\', \'fetch_posts\');
SO网友:scott
我想发表一系列评论,但总的篇幅太长,无法发表评论,所以我必须写一个答案。
你应该说明什么是有效的,什么是失败的,并告诉我们你是如何让它发挥作用的。查看代码太笼统了。
在wordpress中,jQuery别名$
通常不起作用。但是,如果您打开了开发人员工具控制台,则应该会收到一条错误消息。我总是使用jQuery
而不是$
只是为了避免愚蠢的错误。
您声明要将鼠标悬停在某个类别上,但您的触发器已单击。
$( "#alabama" ).click(function() {
如果没有任何悬停行为,请尝试单击。
尽管回调函数似乎将数据放在了错误的位置,但AJAX调用看起来很正常。如果希望查询在悬停状态下进行,那么output
进入工具提示?
AJAX调用中的操作是fetch_posts
但是您的PHP函数被调用import_post
. 这两个函数必须相同,AJAX才能工作。
PHP函数使用$_REQUEST[]
变量既然您是通过POST发送AJAX,那么您可以使用$_POST[]
变量它可能不会破坏或修复任何要更改的内容,但对我来说它更有意义(代码更具可读性)。
开发AJAX调用时,我会像您一样设置jQuery AJAX调用。然后创建处理AJAX调用的PHP函数。首先,我只是回显通过AJAX发送的数据。一旦我知道这是可行的,那么我就编写SQL,并对其进行响应,以确保没有语法错误。此时,我获取所需的数据并将其发回。最后一步是在AJAX回调函数中正确显示数据。
好的,这是您的AJAX教程。希望有帮助。