2015-11-13 29 views
6

た後、私は私の見解にフラッシュメッセージを送信する(例えば、編集時に、私は$フラッシュとホームページにユーザーをリダイレクトしたいです= "あなたのお店は更新されました")。コントローラ内では簡単ですが、JavaScript内で何をすべきかわかりません。あなたの誰かがそれを理解する方法を知っていますか?あなたはウィットをリダイレクト使用する必要がLaravel表示が点滅し、エラーメッセージ成功したAJAX要求の後AJAXリクエストLaravel

コントローラ

public function postUpdate (Request $request) 
    { 
      $this->validate($request, [ 
       'website_name' => 'required', 
       'website_url' => 'required', 
       'category' => 'required', 
       'type' => 'required', 
       'sells' => 'required', 
       'location' => 'required', 
       'description' => 'required', 
       'payment' => 'required' 
      ]); 
      Shop::where('username', '=', Auth::user()->username)->update(['website_name' => Input::get('website_name'), 
       'website_url' => Input::get('website_url'), 'type' => Input::get('type'), 'category' => Input::get('category'), 'sells' => Input::get('sells'), 'location' => Input::get('location'), 
       'payment' => Input::get('payment'), 'description' => Input::get('description')]); 
     return Response::json(['message' => 'Success', 'message_class' => 'alert alert-success fade in']); 
    } 

AJAX

$(".update-form").submit(function(s){ 

      s.preventDefault(); 

      var website_name = $('input[name=website_name]').val(); 
      var website_url = $('input[name=website_url]').val(); 
      var type = $('#type option:selected').val(); 
      var category = $('#category option:selected').val(); 
      var sells = $('input[name=sells]').val(); 
      var location = $('input[name=location]').val(); 
      var payment = $('input[name=payment]').val(); 
      var description = $("textarea#message").val(); 

       $.ajax({ 
       type: "POST", 
       url: "advertiser/update", 
       data: { 
        _token: token, website_name: website_name, website_url: website_url, type: type, category: category, sells: sells, location: location, payment: payment, description: description 

       }, 

       success: function() { 
        $('.modal-backdrop').remove(); 
        $('body').load('advertiser') 

       }, 

       error: function(data) { 
        $('body').load('advertiser') 

       } 
         }) 


     }); 

HTML

<div class="row" id="errors"> 
      @if (Session::has('message')) 
       <div class="{!! Session::get('message_class') !!}"> 
        <a href="#" class="close" data-dismiss="alert">&times;</a> 
        <strong>Note!</strong> {!! Session::get('message') !!} 
       </div> 
      @endif 

      @if($errors->has()) 
       <div class="alert alert-danger fade in"> 
        <a href="#" class="close" data-dismiss="alert">&times;</a> 

        <p>the following errors have occured:</p> 
        <ul> 
         @foreach($errors->all() as $error) 
          <li>{{$error}}</li> 
         @endforeach 
        </ul> 
       </div> 

      @endif 
+0

ajaxの結果を受け取った後にページをリダイレクトしたいですか? –

+0

私はすでにRespone :: jsonに変更していません。私はJavaScript(jquery)でデータを取得する方法を知りたい@sulthanAllaudeen –

+0

@Juam答えを投稿、あなたはJqueryの完全なスクリプトが欲しいですか? –

答えて

3

あなたは、AJAXリクエストを使用する場合は、コントローラ内でリダイレクトすることはできません。

しかし、あなたはこのように行うことができます。

は、あなたがこの

のようにユーザーをリダイレクトすることができ、この

$Response = array(
      'success' => '1', 
     ); 

または

$Response = array(
      'success' => '0', 
      'error' => 'Your Flash Message' 
     ); 

のようなコントローラーでいくつかのパラメータを送信し、Ajaxの結果では、return $Response;

そして、それを返します

if (data.success == 1){ 
    window.location = 'toyourdesiredpath'; 
} 
else 
{ 
//show your error message in your div or span 
} 
+1

これでメッセージは表示されませんが、セッションを設定する必要があります。 – Keet

0

を使用してイム時間メッセージ、あなたのコードに次の例を試してください: -

リターンはリダイレクト::(「ユーザー/ログイン」)へ - >(「メッセージが」、「ログインに失敗しました」)を持ちます。

+0

return Redirect :: to( ( '' message '=>' Success '、' message_class '=>' alert alert-success fade in ']); 私はその作業をAjaxを削除する場合... –

+1

は一つのことは、JSONなど、いくつかのステータスを返し行い、その後、AJAXの成功にあなたは私がどのように知らない json_encodeその成功メッセージ –

+0

リターンレスポンス:: JSONを表示したり、返すことができます動作しませんjavascriptを使用して取得してください 私はあなたに感謝していただきありがとうございます:) –

関連する問題