0

特定のイベントの座席を予約できるフォームがあります。
実際にはWordPressのプラグインです。誰かが予約を送信すると、電子メール通知が適切に送信され、それに応じてイベントの予約ステータスが更新されます。
問題は、予約フォームからのフィードバックがまったくないことです。
「今すぐ予約」をクリックすると、グラフィックが読み込まれ続け、「予約は正常に送信されました」や「フォームにエラーがあります」などのフィードバックは表示されません。予約は正しく保存され、両側に電子メールで通知されます。
JavaScript の問題だと思います。Firebug コンソールにはエラーが表示されません...
予約フォームのコード ソースは次のとおりです。

$('#em-booking-form').submit( function(e){
e.preventDefault();
var em_booking_doing_ajax = false;
$.ajax({
    url: EM.bookingajaxurl,
    data:$('#em-booking-form').serializeArray(),
    dataType: 'jsonp',
    type:'post',
    beforeSend: function(formData, jqForm, options) {
        if(em_booking_doing_ajax){
            alert(EM.bookingInProgress);
            return false;
        }
        em_booking_doing_ajax = true;
        $('.em-booking-message').remove();
        $('#em-booking').append('<div id="em-loading"></div>');
    },
    success : function(response, statusText, xhr, $form) {
        $('#em-loading').remove();
        $('.em-booking-message').remove();
        $('.em-booking-message').remove();
        //show error or success message
        if(response.result){
            $('<div class="em-booking-message-success em-booking-message">'+response.message+'</div>').insertBefore('#em-booking-form');
            $('#em-booking-form').hide();
            $('.em-booking-login').hide();
            $(document).trigger('em_booking_success', [response]);
        }else{
            if( response.errors != null ){
                if( $.isArray(response.errors) && response.errors.length > 0 ){
                    var error_msg;
                    response.errors.each(function(i, el){ 
                        error_msg = error_msg + el;
                    });
                    $('<div class="em-booking-message-error em-booking-message">'+error_msg.errors+'</div>').insertBefore('#em-booking-form');
                }else{
                    $('<div class="em-booking-message-error em-booking-message">'+response.errors+'</div>').insertBefore('#em-booking-form');                           
                }
            }else{
                $('<div class="em-booking-message-error em-booking-message">'+response.message+'</div>').insertBefore('#em-booking-form');
            }
        }
        $('html, body').animate({ scrollTop: $("#em-booking").first().offset().top - 50 }); //sends user back to top of form
        //run extra actions after showing the message here
        if( response.gateway != null ){
            $(document).trigger('em_booking_gateway_add_'+response.gateway, [response]);
        }
        if( !response.result && typeof Recaptcha != 'undefined'){
            Recaptcha.reload();
        }
    },
    complete : function(){
        em_booking_doing_ajax = false;
        $('#em-loading').remove();
    }
});
return false;   
});
4

1 に答える 1

2

jsonデータ型をの代わりにに設定すると、フォームの動作が向上するようですjsonp

通常、別のドメインに対してAJAXクエリを実行する必要がある場合は、jsonpを使用しますが、このインスタンスでは実行していません。

于 2012-06-08T06:48:49.927 に答える