使用 wp_localize_script 将 php 值传递给 js 以在 wordpress 中调用 ajax 有什么好处吗?

Is there any benefit to use wp_localize_script to pass php value to js for ajax call in wordpress?

Codex 说我们需要使用 wp_localize_script 将 php 值传递给外部 js 文件,如下面的代码:

function bangla_load_scripts($hook){

    global $add_settings;
    if ($hook =! $add_settings) {
        return;
    }

wp_enqueue_script('bangla-ajax', plugin_dir_url(__FILE__).'js/bangla-ajax.js', array('jquery')  );
wp_localize_script( 'bangla-ajax', 'ajax_object',
            array( 'ajax_url' => admin_url( 'admin-ajax.php' ), 'we_value' => 1234 );

}
add_action('admin_enqueue_scripts', 'bangla_load_scripts');

文件js/bangla-ajax.js如下:

jQuery(document).ready(function($){
  $('#bangla-ajax-form').click(function(){   
    data = {
      'action' : 'bangla_get_results',
      'val1'   : ajax_object.we_value
    }       
    $.post(ajax_object.ajax_url, data, function(response){
         alert(response);
    });
    return false;
  });
});

但是我们不能简单地使用 'val1' : $('#selectorid').val() 这样我们就不需要使用 wp_localize_script 和所有这些额外的代码,与之相关?

如果您阅读文档,它概述了如果您正在国际化您的代码并且需要来自 PHP 的可能需要翻译的 JS 变量,您可能希望使用此方法。

据我所知,除了国际化之外,它也是一种让你的 PHP 和 JS 代码稍微分离的方法,而不是在你的 JS 代码中间注入乱七八糟的 PHP 变量注入.

就您的示例而言,有点难以理解,因为您根本没有概述您的用例,但根据我收集到的信息,如果您只是将数据从表单元素中提取到 post 它到您的 ajax 端点然后 wp_localize_script 甚至与您正在做的事情无关。