2017-06-16 12 views
0

誰かがタグ要素をクリックしたときにajax関数を呼び出すためのjquery部分です。私がしたいのは、タグ要素からデータ値を取り出し、それをPHP関数に渡し、渡された文字列変数を使用してPHP関数を実行することです。 Jqueryの部分は動作しますが、私はデータ値を送ることができますが、PHP関数は実行されません。Wordpress AJAX、Jquery部分はデータを送信しますが、PHP関数は実行されません

$(function(){ 
    $('#catFilter a').on('click', function(e){ 
    e.preventDefault(); 
    $(this).fadeOut(300); 
    var x = $(this).attr('data-slug'); 
    var ajaxurl = '<?php echo admin_url('admin-ajax.php'); ?>'; 

    $.ajax({ 
    url: ajaxurl, 
    type: 'post', 
    data: {data: x, action: 'filter'}, 
    success: function(data, status) { 
     console.log(x); 
    }, 
    error: function(xhr, desc, err) { 
     console.log(xhr); 
     console.log("Details: " + desc + "\nError:" + err); 
    } 
    }); // end ajax call 
    }); 
}); 

PHPの部分では、Aタグ要素のデータ値をPHP配列に追加し、渡されたパラメータで関数を実行します。

function filter(){ 
    $x = $_POST['data']; 
    array_push($needleArray, $x); 
    post_filter(); 
    die(); 
} 
add_action('wp_ajax_filter', 'filter'); 
add_action('wp_ajax_nopriv_filter', 'filter'); 
+0

ajax 'type'は投稿のための 'method'である必要があります。また、die()コマンドを使用しないことを強くお勧めします。 – l0ul0u

+0

Wordpress AJAXを実行するときには、PHP関数で必要と思われるので、私はそれを使用しました。また、型をメソッドに変更しても、動作しないようです。 JavaScriptの部分は実際にAJAX.phpファイルにデータを送信していますが、functions.phpのPHPは実行されていないようです。私は受信したものをエコーアウトするように設定し、何もエコーアウトしないように見えます。 –

答えて

0

Wordpressは、シンボル$を使用する可能性のある他のjavascriptライブラリとの競合を避けるため、jQuery noConflictモードを順番に使用します。これに

$(function(){ 
    // your code 
}); 

jQuery(function($){ 
    // your code 
}); 

これはjQueryのを使用する安全な方法である あなたはこれから変更する必要があります。 https://developer.wordpress.org/reference/functions/wp_enqueue_script/#user-contributed-notes

関連する問題