我正在wordpress中测试ajax,它基本上可以工作,但我不希望url被硬编码,所以我尝试使用wp_localize_script
获取要使用的对象,但在中向siteurl发出警报时,我收到一个错误:“ReferenceError:WPURL未定义”ajax_script.js
.
功能。php
function my_scripts_method() {
wp_enqueue_script(
\'ajax_script\',
get_stylesheet_directory_uri() . \'/js/ajax_script.js\',
array( \'jquery\' )
);
}
add_action( \'wp_enqueue_scripts\', \'my_scripts_method\' );
wp_localize_script(\'ajax_script\', \'WPURLS\', array( \'siteurl\' => get_option(\'siteurl\') ));
ajax\\u脚本。js公司
$(function () {
$(\'#vru-btn\').click(function() {
// alert(\'code\');
$.post( \'wp-content/themes/wpcleantheme/ajax/test.php\', function(data) {
$(\'#vru-div\').html(data);
});
});;
alert(WPURLS.siteurl);
});
最合适的回答,由SO网友:Milo 整理而成
你在打电话wp_localize_script
在使脚本排队的操作运行之前。脚本入队后,将本地化移到入队操作中。
function my_scripts_method() {
wp_enqueue_script(
\'ajax_script\',
get_stylesheet_directory_uri() . \'/js/ajax_script.js\',
array( \'jquery\' )
);
wp_localize_script(\'ajax_script\', \'WPURLS\', array( \'siteurl\' => get_option(\'siteurl\') ));
}
add_action( \'wp_enqueue_scripts\', \'my_scripts_method\' );
也就是说,您可能不想将请求直接定向到模板文件,因为这样您就无法访问任何WordPress API。相反,直接请求
admin_url(\'admin-ajax.php\')
, 并阅读使用
AJAX in Plugins.
SO网友:GRRRRwordpressgrrr
注册脚本,然后将其本地化,然后将其排队。根据WordPress Codex
// Register the script
wp_register_script( \'some_handle\', \'path/to/myscript.js\' );
// Localize the script with new data
$translation_array = array(
\'some_string\' => __( \'Some string to translate\', \'plugin-domain\' ),
\'a_value\' => \'10\'
);
wp_localize_script( \'some_handle\', \'object_name\', $translation_array );
// Enqueued script with localized data.
wp_enqueue_script( \'some_handle\' );