0

WP ajaxのドキュメントを何時間も見てきましたが、まだこれを理解できません

すべてのコードが 1 つのページにまとめられています。ajax を介していくつかのオプションを更新しようとしていますが、機能していません。応答は成功したことを示していますが、current_form オプションは更新されていません。どんな助けでも大歓迎です。

<?php
add_action('wp_ajax_AWNT_save', 'AWNT_save_data');
function AWNT_save_data() {
update_option('current_form', 'foo');
}
echo get_option('current_form');
?>



<script type="text/javascript">
    jQuery(document).ready(function($) {
$('#save').click(function() { 
        var data = {
            action: 'AWNT_save',
            form_name : $('#form_name').val(),
customC: $('#customC').is(":checked"),
no_throttle: $('#no_throttle').is(":checked"),
form_code : $('#form_code').val()};

        jQuery.post( ajaxurl, data, function(response) {
            alert('Response: ' + response);
        });
    });
});
</script>
4

1 に答える 1

0

ajax を機能させるには、2 つのアクション フックを追加する必要があります。1 つはすでに持っているアクション フックで、もう 1 つはユーザーがログインしていないときに機能する必要があるものですwp_ajax_nopriv_AWNT_save。これにより、ログインせずに ajaxdie()が機能し、最後に関数をそれ以上の実行を停止します。それ以外の場合は常に戻り0echo関数内で使用する必要があります。

add_action('wp_ajax_AWNT_save', 'AWNT_save_data');
add_action('wp_ajax_nopriv_AWNT_save', 'AWNT_save_data');
function AWNT_save_data() {
    update_option('current_form', 'foo');
    echo get_option('current_form'); 
    die(); // this should be here
}

また、javascriptから削除single.phpして別のjsファイルに保存する必要があります。たとえば、テーマのルートフォルダー内にサブフォルダーjsまたは必要なものを作成し、そのフォルダーにファイルを保存して名前my_single_ajax.jsを付け、JavaScriptコードを貼り付けますそのファイルは次のように

jQuery(document).ready(function($) { // my_single_ajax.js file
    $('#save').click(function() {
        var data = {
            action: 'AWNT_save',
            // more...
        };

        jQuery.post( ajaxurl, data, function(response) {
            alert('Response: ' + response);
        });
    });
});

ファイルに次のようfunctions.phpにアクションを追加しますhook

add_action('wp_enqueue_scripts', 'my_scripts_method');
function my_scripts_method() {
    if(is_single())
        wp_enqueue_script( 'my_single_ajax', get_bloginfo('stylesheet_directory').'/js/my_single_ajax.js'); // assumed your sub folder name is 'js' and file name is 'my_single_ajax.js'
}

これにより、スクリプト (my_single_ajax.js) が の場合にのみキューに入れsingle.phpられます。それだけです。

于 2012-08-07T00:59:50.483 に答える