2015-11-13 1 views
6

Après une requête ajax réussie, je veux envoyer un message flash à mon affichage (Par exemple, lors de l'édition, je voudrais rediriger l'utilisateur vers la page d'accueil avec $ flash = "Votre boutique a été mise à jour"). Dans le contrôleur, c'est facile mais je ne sais pas quoi faire dans JavaScript. Est-ce que l'un d'entre vous sait comment le comprendre? Im en utilisant Laravelflash d'affichage et message d'erreur après requête ajax Laravel

Contrôleur

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

Vous souhaitez rediriger la page après la réception d'un résultat ajax? –

+0

non je change déjà pour Respone :: json Je veux savoir comment obtenir les données en javascript (jquery) @sulthanAllaudeen –

+0

@Juam Posté la réponse, Vous voulez le script complet dans Jquery? –

Répondre

3

Vous ne pouvez pas rediriger le contrôleur interne si vous utilisez une requête ajax.

Mais vous pouvez faire comme ça.

Envoyer certains paramètres dans le contrôleur comme celui-ci

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

ou

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

et le retourner return $Response;

Puis, le résultat ajax vous pouvez rediriger l'utilisateur comme celui-ci

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

Cela n'affichera pas le message, vous devrez toujours définir la session. – Keet

0

Vous devez utiliser rediriger l'esprit h message, essayez l'exemple suivant dans votre code: -

return Redirect :: à ('utilisateur/login') -> avec ('message', 'Echec de la connexion');

+0

return Redirect :: to ('annonceur') -> avec (['message' => 'Succès', 'message_class' => 'alerte alerte-succès fondu']); ne fonctionne pas si je retire son travail ... ajax –

+1

faire une chose retourne un statut JSON et dans le succès de ajax vous pouvez afficher ce message de réussite –

+0

retour Réponse :: JSON ou retourner json_encode Je ne sais pas comment obtenez-le en utilisant javascript pouvez-vous me donner un exemple s'il vous plaît merci :) –