0

私はjQuery 1.7.2バージョンを使用しており、そのようなAjaxを使用してフォームを送信しています

$("input#addPostSubmit").click( function(){
    $.ajax({
            //this is the php file that processes the data and send mail
            url: BASE_URL+"post/ajaxcreate",    
            //POST method is used
            type: "POST",
            //pass the data         
            data: $("#addImage").serialize(),       
            //Do not cache the page
            cache: false,
            //success
            success: function (html) {
                         var obj = jQuery.parseJSON(html);          
                    if(obj.Status == 'Success'){
                        $("#error").removeClass('hide');
                        $("#error").addClass('success');
                        $("#error").html(obj.Message);
                        $.fn.colorbox.resize();
                        setTimeout(function(){$.fn.colorbox.close()},5000);
                        window.parent.location.reload();    
                    }
                    if(obj.Status == 'Fail'){
                        $('.add_post_submit').html('<input type="button" id="addPostSubmit" value="Create" />');
                        $("input#addPostSubmit").removeAttr('disabled');
                        $("#error").removeClass('hide');
                        $("#error").addClass('error');
                        error = obj.Message.split(';');
                        html = '<ul>';
                        for(a=0;a<error.length;a++){
                            html += '<li>'+error[a]+'</li>';
                        }
                        html += '</ul>';    
                        $("#error").html(html);
                        $('html').css({overflow: 'hidden'});
                        $.fn.colorbox.resize();
                    }
            }       
    });
}); 

たとえば、フォーム フィールドの 1 つで null を使用することはできません。サーバーがフォームを検証してエラーを返すと表示されますが、もう一度ボタンをクリックすると機能しませんでした。

正常に動作していますが、問題は ajax リクエストが完了し、サーバーがフォーム エラーを返し、送信ボタンが機能しなかった場合です。

4

1 に答える 1

2

クリック ハンドラーではなく、ドキュメントの送信イベントをリッスンすることをお勧めします。

$(document).on('submit','form',function(e){
  e.preventDefault();
  $.ajax({
          //this is the php file that processes the data and send mail
          url: BASE_URL+"post/ajaxcreate",    
          //POST method is used
          type: "POST",
          //pass the data         
          data: $("#addImage").serialize(),       
          //Do not cache the page
          cache: false,
          //success
          success: function (html) {
              // come code
          }       
  });
}); 
于 2012-09-12T15:12:18.637 に答える