サポート » 使い方全般 » AJAXでURLのパラメータを取得する方法

  • 解決済 deffdeff

    (@deffdeff)


    AJAXではURLのパラメータは取得できないのでしょうか?

    現在のURLが「http://example.com/wp-admin/admin.php?page=mypage」だとして以下でコンソールにpage = mypageでなくpage = なしと表示されるのです。

    ↓ dashboard.js

    
    my_ajax_test();
    function my_ajax_test(){
    	const data = {
    		action : 'my_ajax_test'
    	};
    	$.ajax({
    		url : 'http://example.com/wp-admin/admin-ajax.php',
    		type: 'POST',
    		data: data
    	}).done(function( page ) {
    		console.log( 'page =' , page );
    	}).fail(function(XMLHttpRequest, textStatus, errorThrown) {
    		alert('取得失敗');
    	});
    }
    

    ↓ dashboard.php

    
    add_action( 'wp_ajax_my_ajax_test', 'my_ajax_test' );
    function my_ajax_test(){
    	$page = $_GET['page'] ?? 'なし';
    	echo $page;
    	die();
    }
    

    もし上記の流れでの取得がそもそも不可能なのでしたら、それはなぜでしょうか?

    そしてそれが不可能なら、AJAXでパラメータを取得するならば、以下のようにmy_ajax_test()dataに入れて送るのが一番いい(というかそれしかない?)でしょうか?

    
    function my_ajax_test(){
    	const data = {
    		action : 'my_ajax_test'
    		page   : location.search.split('?page=')[1] // "mypage" を取得
    	};
    	// 以下同略
    
2件の返信を表示中 - 1 - 2件目 (全2件中)
  • こんにちは

    POST しているURL は
    http://example.com/wp-admin/admin-ajax.php
    なので、どこにもpageというパラメータがありません。

    http://example.com/wp-admin/admin-ajax.php?page=mypage
    に POST したら取得できるのかもしれませんが、基本はdataに含めるんでしょうね。

    なるほど、POSTしたものが「現在のURL」になるのですね。「現在のUR」は「実行しているページのURL」かと思っていました。理解が深まりました。ありがとうございました。

2件の返信を表示中 - 1 - 2件目 (全2件中)
  • このトピックに返信するにはログインが必要です。