我想将当前页面类别发送到ajax。我在我的博客网站上使用WordPress。我想将当前页面类别发送到infi.php,但我不知道该怎么做。
我的ajax
$.ajax({
type: "POST",
async: false,
url: "/infi.php",
data: {pcount:post_page_count},
success:
function(result){
$("#gizinfi").append(result);
}
});
答案 0 :(得分:3)
要在Wordpress中正确使用AJAX,您需要执行几个步骤。
首先,假设您正在正确注册和排队您的javascript文件(如果您不知道或不知道这意味着您应该检查如何在Wordpress中排队文件),则需要本地化该文件。在你的functions.php文件中,你可以像这样本地化一个文件......
$data_array = array(
'ajaxurl' => admin_url( 'admin-ajax.php' )
);
wp_register_script( 'YourAjaxScript', get_template_directory_uri() . 'js/example.js', array('jquery') );
wp_localize_script( 'YourAjaxScript', 'myAjax', $data_array );
现在您需要一些从javascript访问类别ID的方法。您可以在模板中的某个位置简单地包含空跨度,并将category_id存储为数据属性,然后您可以使用javascript轻松找到它。出于安全原因,您还可以添加“nonce”,这样您就可以检查它是您正在访问PHP的ajax调用,而不是randomer。所以我们将这个添加到你的header.php ...
<?php
//For the sake of this we'll only get the first category
$categories = get_the_category();
$cat = ( !empty( $categories ) ? $categories[0]->term_id : false );
//We'll also create a nonce for security
$nonce = wp_create_nonce( 'ajax_nonce' );
?>
<span id="category-id" data-category="<?php echo $cat; ?>" data-nonce="<?php echo $nonce; ?>"></span>
现在在example.js文件中,您可以创建AJAX函数......
$( document ).ready( function() {
//Fetch your data variables
var $cat = $( '#category-id' ).data('category');
var $nonce = $( '#category-id' ).data('nonce');
$.ajax({
type: 'POST',
url: myAjax.ajaxurl,
data: {
action: 'my_ajax_handler', //PHP function to handle AJAX request
category: cat,
nonce: $nonce
},
success: function( data ) {
$("#gizinfi").append( data );
}
});
});
然后你需要创建一个处理你的AJAX请求的PHP函数(只要你正确地包含那个文件就可以进入你的infi.php文件,但在你的functions.php文件中可能会更好)。例如......
/**
* my_ajax_handler - handles my ajax response and returns some data
* @return string - my data
*/
function my_ajax_handler() {
//First we'll validate the nonce and exit if incorrect
if ( !wp_verify_nonce( $_POST['nonce'], 'ajax_nonce' ) ) { exit; }
//Here we handle your ajax request and return whatever
//All our data variables are saved in the $_POST array
$category = $_POST['category'];
return $category;
}
add_action("wp_ajax_my_ajax_handler", "my_ajax_handler");
add_action("wp_ajax_nopriv_my_ajax_handler", "my_ajax_handler");
最后2行将函数绑定到ajax调用。这应该是你所需要的一切。
希望有所帮助
丹