PHPで作成した関数を非同期処理で使わないといけない場面がありました。 そこでPHPで作成した関数をjavascript内にて実行する方法について調べていたところ、Ajax通信を利用する方法で実行することができるみたいです。
サンプルコード
<script type="text/javascript"> $(function() { $('#room_layout_changer').click(function(){ $('#fileuploadbtn_en').after('<p id="room_layout_loading"><img src="images/loading.gif"></p>'); $.ajax({ type: 'POST', url: <?= "'".admin_url('admin-ajax.php')."'"; ?>, data: { 'action': 'get_room_layout_img_en', 'layout_ja': room_layout_img_ja }, }).success(function(res){ $('#fileuploadbtn_en').after('<p><img src="'+ res +'"></p>'); jQuery('#room_layout_loading').hide(); }).error(function(XMLHttpRequest, textStatus, errorThrown) { alert('error!!!'); }); }); });
サーバー側のPHP関数を実行するファイル
private function __construct() { add_action('wp_ajax_get_room_layout_img_en', array($this, 'ajaxGetRoomLayoutImgEn')); } public function ajaxGetRoomLayoutImgEn(){ $room_layout_img_ja = $_POST["layout_ja"]; $room_layout_img_en = SurfaceUtil::translateRoomLayoutToEnglish($room_layout_img_ja); echo $room_layout_img_en; die(); }