2017-04-27 31 views
0

我有一個表單將項目添加到收藏夾,也刪除它。關於提交的切換窗體 - jQuery(Ajax)

比方說,這是形式的添加和刪除:

@if($checkIfFavIsAdded == 0) 
    {!! Form::open(['id' => 'ajax-form-add', 'style' => 'float:right']) !!} 
     ... 
    <button class="fa fa-star-o fa-2x" tool-tip-toggle="tooltip-demo" id="addFavbutton" title="Add item to favorites" style="color:#fd8809"></button> 
    {!! Form::close() !!} 
@else 
    {!! Form::open(['id' => 'ajax-form-delete', 'style' => 'float:right']) !!} 
     ... 
    <button class="fa fa-star-o fa-2x" tool-tip-toggle="tooltip-demo" id="addFavbutton" title="Delete item from favorites" style="color:grey"></button> 
    {!! Form::close() !!} 
@endif 

這裏,如果該項目被添加到收藏夾我檢查,如果是的話,應該顯示相應的表格。 它可以在頁面重新加載,但我怎麼能在Ajax中做到這一點? 我試圖隱藏並顯示,但沒有成功。它只是隱藏表單而不顯示另一個表單。

<script type="text/javascript"> 
$("#ajax-form-add").submit(function(event) { 
    event.preventDefault(); 
    var form = $(this); 
    $.ajax({ 
     type: "post", 
     url: "{{ url('addFavorites') }}", 
     dataType: "json", 
     data: form.serialize(), 
     success: function(data){ 
      $("#ajax-form-add").hide(); 
      $("#ajax-form-delete").show(); 
     }, 
     error: function(data){ 
      swal("Error!", "error") 
     }, 
     complete: function (data) { 
    } 
    }); 
}); 
</script> 

<script type="text/javascript"> 
    $("#ajax-form-delete").submit(function(event) { 
     event.preventDefault(); 
     var form = $(this); 
     $.ajax({ 
      type: "post", 
      url: "{{ url('deleteFavorites') }}", 
      dataType: "json", 
      data: form.serialize(), 
      success: function(data){ 

       $("#ajax-form-delete").hide(); 
       $("#ajax-form-show").show(); 
      }, 
      error: function(data){ 
       swal("Error!", "Item is not available!", "error") 
      } 
     }); 
    }); 
</script> 

回答

1

刀片模板呈現在服務器端,你要做的是客戶端。

如果您在刀片模板中具有該條件,則呈現併發送到瀏覽器的標記將不包含其他表單。

您需要在ajax響應中返回想要顯示的標記(IE爲新窗體)。

1

對於第二AJAX你寫:

$("#ajax-form-show").show(); 

沒有與ajax-form-show ID出現。它應該是:

$("#ajax-form-add").show(); 
+0

是的,我的壞。但它不會改變任何事情。它仍然不顯示另一種形式。我正在關注@ Joe的評論,並嘗試在if和else語句中包含這兩種表單,但第一個應該可見,另一個隱藏(反之亦然)。或者嘗試在ajax響應中呈現另一個表單。 – harunB10

+0

@ harunB10真正的問題是,如果條件和其他條件,你正在擰表格。當頁面被渲染時,那麼只有1個窗體會在那裏,如果你運行ajax,由於第二個窗體丟失,它不會顯示任何東西。希望它是有道理的。 –

+0

是的,我明白了。現在我試圖在@if($ checkIfFavIsAdded == 0)'時顯示添加表單併爲隱藏的刪除表單設置可見性。 – harunB10