0

私は自分の問題の解決策を何日も探しています。WP_Ajax_Response を送信すると、クライアント側が受信しません。インターネットで考えられるすべてのヒントを確認しましたが、それでも機能しません。誰か助けてくれませんか?

JavaScriptファイルを登録しました:

wp_register_script('test-ajax-js',get_template_directory_uri() . '/library/script/ajax.test.js', array( 'jquery', 'wp-ajax-response' ), '1.0' );
wp_enqueue_script( 'test-ajax-js');
wp_localize_script( 'test-ajax-js', 'ajaxtest', 
                    array( 
                        'Ajax_Url' => admin_url( 'admin-ajax.php' ),
                        'deshopNonce' => wp_create_nonce( 'deshop-ajax-test-nonce' )
                    ) 
            );

これはPHPコードです:

add_action('wp_ajax_shop_ajax_test', 'test_function');
add_action('wp_ajax_nopriv_shop_ajax_test', 'test_function');

function test_function() {
check_ajax_referer( 'deshop-ajax-test-nonce' );


$response = array( 'what'=>'validate_user_login',
            'action'=>'validate_user_login_results',
            'id'=>'1',
            'data'=>'OK' 
            );

$xmlResponse = new WP_Ajax_Response($response);
$xmlResponse->send();

exit();
}

これはJavaScriptファイルです:

jQuery(document).ready(function(event) {
var post = {
                action: 'shop_ajax_test',
                _ajax_nonce: ajaxtest.deshopNonce
            };

jQuery.post( ajaxtest.Ajax_Url, post, function(response){
                var res = wpAjax.parseAjaxResponse(response, 'ajax-response');
                jQuery.each( res.responses, function() {
                    var a = 0;
                });
            });

});

res コンテンツのデバッグ中に、response=[0] が表示されます。jQuery.each 関数では、応答は処理されません!

ここで私を助けるかもしれないヒントをありがとう!

マルク

4

2 に答える 2

0

ドメイン、サブドメイン、またはプロトコルが異なる可能性はありますか? ブラウザが Ajax レスポンスを送信しないため、Ajax レスポンスが強制終了されます。

また、Firefox の firebug または Chrome のインスペクタを使用したことがありますか?明らかに、それらはリクエストとレスポンスを表示します (または、なぜそこに到達しなかったのか)?

于 2013-08-11T09:32:31.147 に答える
0

私は同じ問題を抱えていましたが、post() ではなく jQuery.ajax() を使用して解決しました

于 2013-04-09T18:35:12.830 に答える