Php TinyMCE Modal的WordPress管理Ajax
我试图从WordPress admin中的一个小模式窗口访问ajax调用的admin ajax和nonce变量,但是我对ajax admin url和nonce的调用返回未定义 本地化脚本Php TinyMCE Modal的WordPress管理Ajax,php,jquery,ajax,wordpress,Php,Jquery,Ajax,Wordpress,我试图从WordPress admin中的一个小模式窗口访问ajax调用的admin ajax和nonce变量,但是我对ajax admin url和nonce的调用返回未定义 本地化脚本 <?php function alm_admin_vars() { ?> <script type='text/javascript'> /* <![CDATA[ */ var alm_admin_localize = <?php echo json_encode( ar
<?php function alm_admin_vars() { ?>
<script type='text/javascript'>
/* <![CDATA[ */
var alm_admin_localize = <?php echo json_encode( array(
'ajax_admin_url' => admin_url( 'admin-ajax.php' ),
'alm_admin_nonce' => wp_create_nonce( 'alm_repeater_nonce' )
)); ?>
/* ]]> */
</script><?php }
这个Ajax调用需要从TinyMCE模式以及标准WordPress插件设置屏幕中重用
有没有办法从TinyMCE模式窗口访问'alm_admin_localize'变量
我已经研究过如何使用window.opener
,但这不起作用
非常感谢您的帮助。我不知道这是否能解决您的问题,但让您的客户机和服务器通过JSON而不是HTML进行通信会稍微澄清一些问题: 服务器端
假设您可以从TinyMCE模式进行相同的AJAX调用,
alm\u admin\u localize
现在应该可以在回调中使用,您可以随意使用。哇,有时候我真的试图让事情变得过于复杂。。。答案是在调用alm_admin_localize变量之前添加window.parent。最后一个Ajax调用如下所示:window.parent.alm_admin_localize.Ajax_admin_url。
$.ajax({
type: 'GET',
url: alm_admin_localize.ajax_admin_url,
data: {
action: 'alm_get_tax_terms',
taxonomy: tax,
nonce: alm_admin_localize.alm_admin_nonce,
},
dataType: "html",
success: function(data) {
console.log(data);
},
error: function(xhr, status, error) {
console.log('error');
}
});
<?php
function alm_admin_vars() {
return array(
'alm_admin_localize' => array(
'ajax_admin_url' => admin_url( 'admin-ajax.php' ),
'alm_admin_nonce' => wp_create_nonce( 'alm_repeater_nonce' )
)
);
}
// Respond with JSON
header('Content-type: application/json');
echo json_encode(alm_admin_vars());
$.ajax({
type: 'GET',
dataType: "json",
...
success: function(data) {
console.log('My alm_admin_localize data:', data.alm_admin_localize);
// Ready to update the DOM related to TinyMCE modal
}
});