我试图在wordpress中创建一个ajax函数,我将脚本排队,并在functions.php
:
function my_enqueue_scripts() {
wp_enqueue_script(
\'load_post\',
get_template_directory_uri() . \'/js/load_post.js\',
array( \'jquery\' ),
\'1.0\',
1
);
wp_localize_script(
\'load_post\',
\'wp_ajax\',
array(
\'url\' => admin_url( \'admin-ajax.php\' ),
\'nonce\' => wp_create_nonce( \'ajax_nonce\' )
)
);
}
add_action(\'wp_enqueue_scripts\', \'my_enqueue_scripts\');
load\\u post(加载后)。js公司:
jQuery(document).ready(function($) {
jQuery(\'#next-container\').click(function($) {
var $container = jQuery(\'#isotope-container\');
var IDs = [];
jQuery(".element").each(function($){ IDs.push(this.id); });
jQuery(\'#next-container\').html(\'loading\');
jQuery.ajax({
type: \'POST\',
url: wp_ajax.url,
dataType: \'html\',
data: { action: \'load_post\',
ajax_nonce: wp_ajax.nonce,
post_ids: IDs,
}, //{\'post_ids[]\': IDs },
success: function(data) {
jQuery(\'#next-container\').html(\'\');
$container.isotope( \'insert\', $(data));
}
})
})
})
但是在我的
load_post.js
我找不到
wp_ajax
变量在google chrome或IE中,我没有看到在源代码的头部添加任何变量。
我的问题出在哪里?我错过什么了吗?
最合适的回答,由SO网友:Johannes Pille 整理而成
您的代码看起来正确
alert(wp_ajax.nonce);
应显示nonce
您还可以验证wp_ajax
对象通过console.log(wp_ajax)
在浏览器的Javascript控制台中。
wp_localize_script
将对象添加到页脚(调用wp_footer()
应该出现在主题的页脚中。php文件)<看起来是这样的:
<script type="text/javascript">
/* <![CDATA[ */
var wp_ajax = {"url":"http://example.com","nonce":"123XYZ"};
/* ]]> */
</script>