0

免責事項:これがWordPressに関連しているかどうかはわかりません。

簡単なチュートリアルに従って、WordPressローカルホストでAJAXが機能するかどうかを確認しています。

私のajax-test.js:

jQuery(document).ready( function($){
    $(".ajax-link").click( function(){
        var data = {
            action: 'test_response',
            post_var: 'this will be echoed back'
        };
        $.post(the_ajax_script.ajaxurl, data, function(response) {
                                                       alert(response);
                                                       });
        return false;
    });
});

プラグインで、スクリプトをwp_print_scripts()に追加し、処理関数を追加します。

function test_ajax_load_scripts(){
    wp_enqueue_script("ajax-test", plugin_dir_url( __FILE__ ) . 'ajax-test.js', array( 'jquery' ) );
    wp_localize_script('ajax-test', 'the_ajax_script', array( 'ajaxurl' => admin_url('admin-ajax.php') ) );
}
add_action('wp_print_scripts', 'test_ajax_load_scripts');

function text_ajax_process_request(){ 
    if(isset($_POST["post_var"])){
        $response = $_POST["post_var"];
        echo $response;
        die();
    }
}
add_action('wp_ajax_test_response', 'test_ajax_process_request');

href = "#"のリンク出力を取得し、それをクリックすると、ページの上部に移動します。Firebugをチェックすると、ajax-test.jsがヘッダーにロードされていることを確認できます。コンソールには何もありません。

アラートが発生しない理由を他にどのようにデバッグできますか?

4

2 に答える 2

0

falseを返してもページがトップにジャンプする場合は、JavaScriptエラーが発生します。おそらく$.post失敗しています。詳細については、にエラーコールバックを追加してみてください$.post

$.post(...).fail(function(){
    console.log(arguments)
});

もう1つの可能性は、クリックハンドラーに到達していないことです。その場合は、セレクターが正しく、コードの実行時に要素がページに存在することを確認してください。要素がajaxまたはjavascriptによって追加された場合、その要素が追加された後に実行するにはこのコードが必要です。または、またはでイベント委任を使用してイベントをアタッチする必要があります.on.delegate

$(document).on("click",".ajax-link",function(){...});
于 2012-06-04T18:00:52.270 に答える
0

イベントワイヤアップ関数には、次のものが必要e.preventDefault()です。

$(".ajax-link").click( function(e){ //<--------- e
    e.preventDefault(); //<-------- preventDefault()   
    var data = {
        action: 'test_response',
        post_var: 'this will be echoed back'
    };
    $.post(the_ajax_script.ajaxurl, data, function(response) {
        alert(response);
    });        
});
于 2012-06-04T18:02:24.070 に答える