ajax通信で、フィールドデータから複数データを受けるためのコードを書きました。
サーバー側
今回は、施設の場所や住所、それ以外にも複数の情報を複数個送信します。
function return_location(){ //ajax通信で呼び出される関数名です $args=array( 'post_type'=>'post', //post_typeをpostにすることで全ての記事を取得できます 'posts_per_page' => 50, //これは、この通信で取得する記事の数です ); $wp_q = new WP_Query($args); $cnt=0; $locations_dataset= array(); while($wp_q->have_posts()){ $wp_q->the_post(); $loc_name = $wp_q->post->location_name; //ここは、それぞれのフィールドのキーの値を使います。 $site = $wp_q->post->location; //$wp_q->post->key とすればその値を取得できます。 $url = $wp_q->post->url; $tell = $wp_q->post->tell; $lat = $wp_q->post->lat; $lng = $wp_q->post->lng; $loc_dataset = array( $loc_name, $site, $url, $tell, $lat, $lng, ); $location_dataset[$cnt]=$loc_dataset; $cnt++; } echo json_encode($location_dataset,JSON_UNESCAPED_UNICODE); //複数データを受け取らせるために、json形式にする必要があります。 die(); }
クライアント側
jQuery(function($){ $.ajax({ type: 'POST', url: wp_url , //ここはadmin-ajax.phpへのパスを data: { action: 'return_location' }, crossDomain: true, success: function(location_datasets){ let json_loc = eval(location_datasets); //json形式になっているので、evalします。 Object.keys(json_loc).forEach(function(keys){ //json_loc.foreach()はエラーとなります /* ここでそれぞれの処理を記述 */ }) }, error: function(response){ //こちらは失敗処理です console.log("error text "+response); } }) })
こうすることで、2次元配列でもデータを受け取ることが出来ます。