2017-04-27 1 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

블레이드 템플리트가 서버 측으로 렌더링되므로 클라이언트 측에서 수행하려고합니다.

블레이드 템플릿에 해당 조건이있는 경우 렌더링되고 브라우저로 전송되는 마크 업에는 다른 양식이 포함되지 않습니다.

아약스 응답에서 표시하려는 마크 업 (IE는 새 양식)을 반환해야합니다. 두 번째 아약스를 들어

1

은 당신이 쓴 :

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

아니, ajax-form-show와 ID가 존재합니다. 그것은이어야한다 :

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

그래, 나쁘다. 하지만 아무것도 바뀌지 않습니다. 여전히 다른 형태는 보이지 않습니다. @ Joe의 주석을 따르고 if 및 else 문에 두 형식을 모두 포함하려고 시도하지만 첫 번째 문은 표시되어야하고 다른 문은 숨겨야합니다 (반대의 경우도 마찬가지입니다). 아니면 아약스 응답에 다른 양식을 렌더링하려고합니다. – harunB10

+0

@ harunB10 진짜 문제는 if와 else 조건 안에서 폼을 짜내는 것입니다. 페이지가 렌더링 될 때 오직 하나의 양식 만 존재하고 두 번째 양식이 없기 때문에 Ajax를 실행하면 아무 것도 표시되지 않습니다. 그것이 의미가 있기를 바랍니다. –

+0

예, 이해합니다. 이제'@if ($ checkIfFavIsAdded == 0)'폼을 추가하고 숨김 폼에 표시 형식을 설정하려고합니다. – harunB10