2017-10-10 4 views
0

Je suis en train de faire un message jquery à partir d'un fichier JS à une route Laravel mais semble que ça ne fonctionne pas et je ne sais pas pourquoi.jquery post appel à un itinéraire laravel ne fonctionne pas

Mon objectif principal ici est: obtenir tous les ID d'une table qui a une case cochée et changer leur valeur de colonne sur SQL.

Donc, voici ma fonction JS:

function concludeAll() { 
     var arrayIds = []; 

     $('.checkbox1').each(function() { 
      var $this = $(this); 
      var $id = $this.attr('id'); 

      if ($this.is(":checked")) { 
       arrayIds.push($id); 
      } 
     }); 

     var json = { 
      "ids": arrayIds 
     }; 

     $.post('http://localhost:8000/controle/pending/concludeAll', 
      { 
       '_token': $('meta[name=csrf-token]').attr('content'), 
       ids: arrayIds 
      }) 
      .error(

      ) 
      .success(

      );  
} 

Et voici ma route:

Route::group(['prefix' => '/controle'], function() { 
Route::post('/pending/concludeAll/', function() { 

    $input = Input::only('ids'); 
    $input = $input['ids']; 

    foreach($input as $id) { 
     $student = new App\Aluno(); 
     $student = $student->where('id', '=', $id)->first(); 
     $student->pending = '0'; 
     $student->save(); 
    } 

}); }; 

Donc, si je vérifie quelques lignes sur la table et appuyez sur le bouton qui appelle la fonction , rien ne se passe sur ma console. Je vois 20

Sur aperçu,: sur le réseau> en-têtes> forme des données que je vois le jeton et les ID, comme ceci:

_token: fNWunwF8yDLSycrkBE684wgQcyK9dP8wbR7VgLjC ids []: 23 ids [] exactement la même page que je suis. En réponse, je vois le code HTML de la page.

J'ai aussi essayé un dd ($ input); sur la route, mais rien de différent n'arrive ..

Essayé php itinéraire artisanal: clair et rien de différent n'arrive.

Si je change le nom de l'URL pour http://localhost:8000/controle/pending/concludeAll2, aucune erreur sont retournés, ce qui me rend fou ...

Toute idée comment faire cet appel de poste à la route? Je vous remercie!

+0

Convertissez votre '' arrayIds' en JSON ids: JSON.stringify (arrayIds) 'puis voir .. –

+0

Si rien ne se passe dans votre console, comment pouvez-vous voir ces en-têtes? – Devon

+0

@HimanshuUpadhyay la seule différence qu'il fait est: Sur réseau> en-têtes> données de formulaire je vois ids: ["23", "20", "29"] au lieu de ids []: 23 ids []: 20. Je pense que c'est nécessaire, mais n'a pas encore résolu le problème. Mais merci quand même. –

Répondre

0

essayer de changer l'itinéraire vers

Route::post('/controle/pending/concludeAll', function() { 
    $input = Input::only('ids'); 
    $input = $input['ids']; 
    foreach($input as $id) { 
     $student = new App\Aluno(); 
     $student = $student->where('id', '=', $id)->first(); 
     $student->pending = '0'; 
     $student->save(); 
    } 

}); 

et en fonction JS:

function concludeAll() { 
     var arrayIds = []; 

     $('.checkbox1').each(function() { 
      var $this = $(this); 
      var $id = $this.attr('id'); 

      if ($this.is(":checked")) { 
       arrayIds.push($id); 
      } 
     }); 
     arrayIds=JSON.stringify(arrayIds); 

     var json = { 
      "ids": arrayIds 
     }; 

     $.post('http://localhost:8000/controle/pending/concludeAll', 
      { 
       '_token': $('meta[name=csrf-token]').attr('content'), 
       ids: arrayIds 
      }) 
      .error(

      ) 
      .success(

      );  
    } 
+0

Je suis tellement désolé, j'ai oublié de poster que la Route ci-dessus est à l'intérieur d'un groupe Route ('controle') –

+0

@GabrielAugusto pouvez-vous s'il vous plaît poster le formulaire, peut-être que cela donnera un indice.Problème avec la méthode de publication peut également causer le même genre de problème –

+0

Je suis désolé, il n'y a pas de formulaire ici. C'est une table où je sélectionne des éléments et quand j'appuie sur un bouton normal, il appelle la fonction javascript qui a la méthode post. –