了解wp_localize_script函数背后的概念问题

时间:2017-06-10 17:59:53

标签: javascript php ajax wordpress localization

我目前正在教自己如何在Wordpress中使用AJAX。要获取AJAX-admin URL,我使用WordPress提供的wp_localize_script函数(https://codex.wordpress.org/Function_Reference/wp_localize_script)将URL传递给我的Javascript文件。在我的JS文件中,我可以访问我“附加”到我的JS的数组。虽然这很好用,但我很难理解它背后的概念。

<?php

// Register the script
wp_register_script( 'some_handle', 'path/to/myscript.js' );

// Localize the script with new data
$translation_array = array(
    'ajax_url' => admin_url( 'admin-ajax.php' )
);
wp_localize_script( 'some_handle', 'object_name', $translation_array );

// Enqueued script with localized data.
wp_enqueue_script( 'some_handle' );

然后可以在JS文件中访问数据,如此

<script>
// alerts 'Some string to translate'
alert( object_name.ajax_url);
</script> 

我怎么可能在Javascript中访问我从未在Javascript文件中明确定义的数组?如何将PHP“附加”到我的Javascript中,而不是在文件中正式写出来?

我想有一个关于JS的基本概念,我还不明白,所以如果你能指出我的方向会很棒。

1 个答案:

答案 0 :(得分:0)

好的,经过一些研究后我发现了 - 我只是看错了地方。数据实际上并没有写入任何特定的Javascript文件(或神奇地附加到一个)。

它只是作为一个数组打印在DOM <script>标记内的DOM中,如下所示:

<script type="text/javascript">
/* <![CDATA[ */
var ajaxUrl = {"ajaxurl":"http://*******************/admin-ajax.php"};
/* ]]> */
</script> 

从这里可以访问所有JS文件。