2015-06-13 14 views
0
$("#ajaxform").submit(function(e){ 
     var info = $(this).serialize(); 
     $.ajax(
     { 
      url : "controller", 
      type: "post", 
      data : info, 
      success:function(data, textStatus, jqXHR) 
      { 
       $('.valid').html(data); 
      } 
     }); 
     e.preventDefault() 
    }); 
    $(".mainbutton").click(function(){ 
     $("#ajaxform").submit(); 
     if($('.valid').html(data) == "success"){ // could this fail? 
      var info = $("#ajaxform").serialize(); 
      $.get("controller", info); 
     } 
    }); 

我提出AJAX調用和響應,我把「成功」。如果($('。valid').html(data)==「success」)在調用之前調用並且實際上if語句失敗,是否有機會?在下一行代碼之後有沒有機會通過ajax調用完成?

回答

0

。 Ajax調用是異步。因此,你不能指望順序流。它是更好的在回調來處理像

$("#ajaxform").submit(function(e){ 
    var info = $(this).serialize(); 
    $.ajax(
    { 
     url : "controller", 
     type: "post", 
     data : info, 
     success:function(data, textStatus, jqXHR) 
     { 
      $('.valid').html(data); 
      if($('.valid').html(data) == "success"){ 
       var info = $("#ajaxform").serialize(); 
       $.get("controller", info); 
      } 
     } 
    }); 
    e.preventDefault() 
}); 
$(".mainbutton").click(function(){ 
    $("#ajaxform").submit(); 
}); 
+0

我想通過這種方式,但我的servlet不叫。 – oronaparcali

+0

@oronaparcali,這可能是由於其他原因。確保你輸入的是if語句,把console.log放在那裏 – AmmarCSE

+0

@oronaparcali,你可以在小提琴中複製它,這樣我可以更好地幫忙嗎? – AmmarCSE

0

可以使用.promise()()完成;

success:function(data, textStatus, jqXHR) 
      { 
       $('.valid').html(data).promise().done(function(){ 
         $.get("controller", info); 
       }); 
      } 

$(".mainbutton").click(function(){ 
    $("#ajaxform").submit(); 
    // or 
    //$("#ajaxform").trigger('submit'); 
}); 

約.promise()的更多信息。()完成看一看http://digitizor.com/2013/08/03/jquery-html-callback-function-using-promise/

相關問題