我正在研究一个儿童主题my-page-template.php
我有:
//...
$current_key= 5; //calculated result
wp_localize_script(\'my_js\', \'ajaxload\', array(\'post_id\' => $current_key));
在中
my_js.js
我有一个AJAX调用:
$.ajax({
//...
type: \'post\',
data: {
action: \'ajax_load\',
post_id: ajaxload.post_id
}
})
现在在
functions.php
, 我想编辑/更新
ajaxload.post_id
根据一项新的结果。有没有办法做到这一点?如果我再打电话
wp_localize_script()
使用相同的
$name
如下所示,这是否可行?
$nex_key=8; //new result
wp_localize_script(\'my_js\', \'ajaxload\', array(\'post_id\' => $new_key));
最合适的回答,由SO网友:Milo 整理而成
wp_localize_script
结果是通过PHP将数据打印到脚本标记之前的页面,无论它是否在wp_head
或wp_footer
, 取决于您将脚本设置为输出的位置。使命感wp_localize_script
从AJAX处理程序中,您将通过JavaScript返回数据,而不会做任何事情。
您可以将想要从AJAX处理程序返回的任何数据放入json对象中wp_send_json
, 包括要用于替换的新值ajaxload.post_id
. 然后,您可以访问success
函数,您可以在其中更新ajaxload.post_id
.
编辑-
在AJAX处理程序中:
$response = array(
\'post_id\' => $next_key,
\'something_else\' => \'some other data\'
);
wp_send_json( $response );
在您的JS中:
$.ajax({
type: \'post\',
data: {
action: \'ajax_load\',
post_id: ajaxload.post_id
},
success:function( data ) {
var result = $.parseJSON( data );
ajaxload.post_id = result.post_id;
}
});