2015-11-13 12 views
6

Dopo una richiesta ajax riuscita, desidero inviare un messaggio flash alla mia visualizzazione (ad esempio, dopo la modifica, vorrei reindirizzare l'utente alla home page con $ flash = "Il tuo negozio è stato aggiornato"). All'interno del controller, è facile, ma non so cosa fare all'interno di JavaScript. Qualcuno di voi sa come scoprirlo? Im utilizzando laraveldisplay flash e messaggio di errore dopo richiesta Ajax 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

Vuoi reindirizzare la pagina dopo che è stato ricevuto un risultato jax? –

+0

no ho già cambiato in Respone :: json Voglio sapere come ottenere i dati in javascript (jquery) @sulthanAllaudeen –

+0

@Juam Pubblicato la risposta, Vuoi lo script completo in Jquery? –

risposta

3

Non è possibile reindirizzare il controller interno se si utilizza una richiesta Ajax.

Ma puoi fare così.

Invia alcuni parametri nel controller come questo

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

o

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

e restituirlo return $Response;

Poi, Nel risultato Ajax è possibile reindirizzare l'utente in questo modo

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

Tuttavia, questo messaggio non verrà visualizzato, sarà comunque necessario impostare la sessione. – Keet

0

Devi usare reindirizzare ingegno h messaggio, prova il seguente esempio nel tuo codice: -

return Redirect :: to ('user/login') -> with ('message', 'Login Failed');

+0

return Reindirizza :: to ('advertiser') -> with (['message' => 'Success', 'message_class' => 'alert alert -fade fade in']); non funziona se tolgo ajax suo funzionamento ... –

+1

fare una cosa un po 'tornare status di JSON e poi nel successo di Ajax è possibile visualizzare un messaggio che il successo –

+0

ritorno Response :: JSON o tornare json_encode io non so come scaricalo usando javascript puoi darmi un esempio per favore grazie :) –

Problemi correlati