2017-09-28 6 views
0

laravelでエラーを表示すると問題が発生します。私はajaxを使用して、リクエストフォームをクライアントからサーバに、そしてそれ以前に送信しています。これは私のAjaxコードであり、機能のようです。append()は機能していません。ビューでlaravelとajaxでエラーを表示する方法

$('#petition-form').on('submit', function(e) { 
    e.preventDefault(); 
    var formdata = new FormData($(this)[0]); 
    formdata.append('content', tinymce.get('content').getContent()); 
    $.ajax({ 
    url: $(this).attr('action'), 
    data: formdata, 
    processData: false, 
    contentType: false, 
    cache: false, 
    method: 'POST' 
    }).done(function(response) { 
    window.location.href = response.slug; 
}).fail(function(response) { 
    $(this).append(response); 
}); 
}); 

、ここでは、私の見解である

@if (count($errors) > 0) 
<div class="alert alert-danger"> 
    <ul> 
     @foreach ($errors->all() as $error) 
     <li> 
      {{ $error }} 
     </li> 
     @endforeach 
    </ul> 
</div> 
@endif 

ので、誰もが私はそれを解決するのに役立ちます!

+1

'$(this)'は 'fail'コールバック内の別のオブジェクトであるかもしれません。 '$(this)'をコールバック以外の変数に保存してから、代わりにその変数を使用してみてください。 – Wreigh

答えて

0

はこのような何かを試してみてくださいありがとう - $(this)への参照を格納self変数を設定する:

$('#petition-form').on('submit', function(event) { 
    event.preventDefault(); 
    var self = $(this), 
     formData = new FormData(self[0]); 
    formData.append('content', tinymce.get('content').getContent()); 
    $.ajax({ 
     url: self.attr('action'), 
     data: formData, 
     processData: false, 
     contentType: false, 
     cache: false, 
     method: 'POST' 
    }).done(function(response) { 
     window.location.href = response.slug; 
    }).fail(function(response) { 
     self.append(response); 
    }); 
}); 

あなたは、あなたのビューから$errors参照を削除することができ、そして私が作るために、おそらくむしろappendよりprepend検証メッセージをだろうそれらがフォームの上に表示されていることを確認してください。ただし、それは好みの問題です。

+0

それでも動作しません。多分私はparseJSONを使用する必要がありますか? –

関連する問題