2015-11-13 15 views
6

Po pomyślnej prośbie ajaxowej, chcę wysłać wiadomość flash do mojego widoku (na przykład po edycji chciałbym przekierować użytkownika na stronę główną za pomocą $ flash = "Twój sklep został zaktualizowany"). Wewnątrz kontrolera jest to łatwe, ale nie wiem, co zrobić w JavaScript. Czy ktokolwiek z was wie, jak to rozgryźć? Im przy laravelflash display i komunikat o błędzie po prośbie ajaxowej Laravel

Controller

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

Chcesz przekierować stronę po otrzymaniu wyniku ajax? –

+0

Nie, już zmieniam na Respone :: json Chcę wiedzieć, jak uzyskać dane w javascript (jquery) @sulthanAllaudeen –

+0

@Juam Wysłałem odpowiedź, chcesz pełny skrypt w Jquery? –

Odpowiedz

3

Nie możesz przekierować kontrolera wewnątrz, jeśli używasz żądania ajax.

Ale możesz to zrobić.

Wyślij niektóre parametry w sterowniku jak ten

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

lub

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

i odesłać go return $Response;

Następnie w wyniku ajax można przekierować użytkownika jak to

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

Nie wyświetli się komunikat, ale musisz ustawić sesję. – Keet

0

Musisz użyć przekierowania dowcip h wiadomość, spróbuj podać następujący przykład w swoim kodzie: -

return Przekierowanie :: to ("użytkownik/login") -> z ("wiadomość", "Logowanie nie powiodło się");

+0

return Redirect :: to ("reklamodawca") -> z (['message' => 'Success', 'message_class' => 'alert alert-success fade in']); nie działa jeśli usunąć ajax swoją pracę ... –

+1

zrobić jedną rzecz zwrócić jakiś status JSON i następnie w sukcesie AJAX można wyświetlić tę wiadomość sukces –

+0

powrotną Response :: json lub powrót json_encode nie wiem jak pobierz za pomocą javascript możesz dać mi przykład, dziękuję :) –

Powiązane problemy