更新wp_LOCALIZE_SCRIPT()调用的数据参数

时间:2015-10-21 作者:Naourass Derouichi

我正在研究一个儿童主题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));  

1 个回复
最合适的回答,由SO网友:Milo 整理而成

wp_localize_script 结果是通过PHP将数据打印到脚本标记之前的页面,无论它是否在wp_headwp_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;
   }
});

相关推荐

WordPress AJAX错误400向远程站点发送数据的错误请求

我正在使用发件人。net获取电子邮件订阅列表。这个网站给了我一些信息,可以将用户的电子邮件添加到订阅列表中。我想使用WordPress ajax来实现这一点。但它返回错误400错误请求。我的代码是:文件ajax新闻脚本。js公司: jQuery(document).ready(function($){ // Perform AJAX send news on form submit $(\'form#fnews\').on(\'submit\', funct