Jquery 使用AJAX获取post数据
我试图从Wordpress发布的AJAX中提取内容 我已将我迄今为止的努力包括在下面 加载的脚本Jquery 使用AJAX获取post数据,jquery,ajax,wordpress,Jquery,Ajax,Wordpress,我试图从Wordpress发布的AJAX中提取内容 我已将我迄今为止的努力包括在下面 加载的脚本 wp_enqueue_script( 'my-ajax-request', get_stylesheet_directory_uri() . '/js/ajax.js', array( 'jquery' ) ); wp_localize_script( 'my-ajax-request', 'MyAjax', array( 'ajaxurl' => admin_url( 'admin-ajax
wp_enqueue_script( 'my-ajax-request', get_stylesheet_directory_uri() . '/js/ajax.js', array( 'jquery' ) );
wp_localize_script( 'my-ajax-request', 'MyAjax', array( 'ajaxurl' => admin_url( 'admin-ajax.php' ) ) );
JavaScript
jQuery(document).ready(function($) {
$('.ajax a').click(function(event) {
event.preventDefault();
var id = $(this).data('id');
$.ajax({
type: 'POST',
url: MyAjax.ajaxurl,
data: {'action' : 'ajax_request', 'id': id},
dataType: 'json',
success: function(data) {
console.log(data);
}
});
return false;
});
});
在这里,我开始了我的行动。如何将post数据编码为JSON并返回
使用函数和返回Ajax请求结果
它们都使用JSON,负责头、JSON编码和回显,并将其终止
此外,本地化脚本时还应发送nonce:
array(
'url' => admin_url( 'admin-ajax.php' ),
'nonce' => wp_create_nonce( "my_long_unique_string_name" ),
)
并在wp\u ajax.*
操作回调中检查它:
check_ajax_referer( 'my_long_unique_string_name', 'nonce' );
示例:更新: 我在这篇文章上看到了一些活动,而且非常古老 请改用WP REST API:
我可以通过设置全局$post变量来解决这个问题 然后对$response进行编码
add_action('wp_ajax_nopriv_ajax_request', 'ajax_handle_request');
add_action('wp_ajax_ajax_request', 'ajax_handle_request');
function ajax_handle_request(){
$postID = $_POST['id'];
if (isset($_POST['id'])){
$post_id = $_POST['id'];
}else{
$post_id = "";
}
global $post;
$post = get_post($postID);
$response = array(
'sucess' => true,
'post' => $post,
'id' => $postID ,
);
// generate the response
print json_encode($response);
// IMPORTANT: don't forget to "exit"
exit;
}
使用jQuery检索数据和输出
jQuery(document).ready(function($) {
$('.ajax a').click(function(event) {
event.preventDefault();
var id = $(this).data('id');
$.ajax({
type: 'POST',
url: MyAjax.ajaxurl,
data: {'action' : 'ajax_request', 'id': id},
dataType: 'json',
success: function(data) {
console.log(data['post']);
}
});
return false;
});
});
你想什么时候从帖子中获取信息,发布时或发布后?还有,你想获取什么信息?仅供参考,这里也有一个问题,尽管像这样的问题在这里也很受欢迎。另外,如果你的目标是学习AJAX和JSON,那么这个WordPress示例可能不是最好的起点,因为WordPress并没有针对这类事情的API(我不认为),当然,这不是一个标准的返回JSON结果的方法。我广泛使用AJAX,但老实说,我一直在努力用WordPress做你想做的事情。@director我想在锚点击时获取帖子信息。我已经为包含帖子id的锚添加了一个数据属性。我想包含get_post($post_id)变量,该变量包含关于post的所有信息。如果上面给出了我的答案,我将如何调用这些函数?我的解决方案是否表明对ajax_请求操作的任何调用在技术上都是成功的呢?@hyperdrive,如果未设置post ID,我将返回一个错误。请参见我链接的示例。。。
jQuery(document).ready(function($) {
$('.ajax a').click(function(event) {
event.preventDefault();
var id = $(this).data('id');
$.ajax({
type: 'POST',
url: MyAjax.ajaxurl,
data: {'action' : 'ajax_request', 'id': id},
dataType: 'json',
success: function(data) {
console.log(data['post']);
}
});
return false;
});
});