開発サーバーでは機能するが、ステージング サーバーでは機能しないスクリプトがいくつかあります。
add_action('wp_head','get_gz_info',30);
function get_gz_info(){
?>
<script type="text/javascript" >
jQuery(document).ready(function($) {
var modal = {action:'modal_action'};
var ajaxurl = '<?php echo admin_url('admin-ajax.php'); ?>';
$.post(ajaxurl,modal,function(data){
$('body').append(data);
});
});
</script>
<?php
}
phpはおおよそ次のとおりです。
add_action('wp_ajax_modal_action', 'set_modal');
add_action('wp_ajax_nopriv_modal_action', 'set_modal');
function set_modal() {
...
}
私の開発側ではすべて正常に動作しますが、ステージング側では javascript がヘッダーに配置されますが (dev と同じように)、「ajax 部分」は実行されません。ステージング側がそれにアクセスするためにユーザー名/パスワードを必要とする可能性はありますか?
httpsの有無にかかわらず試してみましたが、同じ結果が得られました。
検査によると、これはajaxurl「...mysite.../wp-admin/admin-ajax.php」として設定されているため、ajaxurlが実装されています。奇妙な問題は、あるサーバーではそのまま機能するが、次のサーバーでは機能しないことです。
----- 編集 ----- html はこれを js としてヘッドに表示します (jquery のロード後)
<script type="text/javascript" >
jQuery(document).ready(function($) {
var modal = {action:'modal_action'};
var ajaxurl = '...mysite.../wp-admin/admin-ajax.php';
$.post(ajaxurl,modal,function(data){
$('body').append(data);
});
});
</script>