Salut à tous !

je souhaiterai réaliser un système de messagerie du même type que Gmail

avec la possibilité de voir les messages reçus, envoyés et supprimés
en plus du fait que l'on peut envoyer des messages à une ou plusieurs personnes .

voici un exemple :
https://adminlte.io/themes/AdminLTE/pages/mailbox/mailbox.html

7 réponses


Salut,

D'accord , mais quel est ton problème du coup ?

dans mon fichier controller ya ça :

class MailboxController extends Controller
{
/**

  • Create a new controller instance.
  • @return void
    */

    /private $m;
    private $auth;
    /

    public function __construct()
    {
    $this->middleware('auth');
    }

    /**

  • Show the application dashboard.
  • @return \Illuminate\Http\Response
    */

    public function index()
    {
    return view('mailbox.mailbox');
    }

    public function ReceptionMessage()
    {
    $Messages = DB::table('message_e_u')
    ->leftjoin('eleve', 'eleve.id', '=', 'message_e_u.eleve_id')
    ->leftjoin('candidature', 'eleve.id', '=', 'candidature.eleve_id')
    ->leftjoin('candidature_utilisateur', 'candidature.id', '=', 'candidature_utilisateur.candidature_id')
    ->leftjoin('utilisateur', 'eleve.update_by', '=', 'utilisateur.id')
    ->where('candidature.annee_scolaire_id','=', 5)
    ->select('message_e_u.id','message_e_u.sujet',
    'message_e_u.texte','message_e_u.eleve_id',
    'eleve.prenom','eleve.nom',
    'message_e_u.created_at')
    ->get();

    return Response::json(array('Messages' => $Messages));

    }

}

je souhaite récuperer les messages qui se trouve dans la bdd et les afficher en ajax sur ma page vue ! mais je n'y parviens pas.

dans la vue:

         <script>
                      $.ajax({
                       type: "GET",
                       dataType: "json",
                       url: "ReceptionMessage",
                       data: {'_token': $('input[name=_token]').val()},
                       success: function (data) {
                       $(".sujet").html(data.sujet);
                       },
                       error: function (data) {
                           console.log('Erreur: ', data);
                       },
                   }); 

          </script>

Bonsoir.
Pour commencer, je ne pense pas que l'url que tu définies dans ton javascript soit correcte, car tu as juste mis le nom de la méthode de ton controller.
Ensuite, pour info :

Deprecation Notice: The jqXHR.success(), jqXHR.error(), and jqXHR.complete() callbacks are removed as of jQuery 3.0. You can use jqXHR.done(), jqXHR.fail(), and jqXHR.always() instead.

Donc si tu utilises une version de jQuery qui soit au minimum la 3.0, tu dois changer les callbacks.
De plus que dans le retour de ton javascript, tu récupères très mal et traite très mal les données que tu reçois :

  • La méthode de ton controller renvoi du json, qui lui même semble contenir plusieurs enregistrements de ta base de données, tu devrais donc plutôt avoir quelque chose comme ça : data.Messages vu que tu envois une variable nommée $Messages dans l'index nommé Messages.
  • Tu ne peux pas utiliser la méthode html sur une chaîne de caractères ou un objet ou une collection d'objets, tu ne peux l'utiliser comme le nom de la méthode l'indique, que sur du code HTML.

si l'url est correcte car il reçois bien les données mais sur la vue sa m'affiche [object object ] au lieu de m'afficher toute mes données

sur la vue sa m'affiche [object object ]

C'est normal, le javascript ne va pas faire le travail tout seul, il ne peut pas deviner comment tu vas vouloir traiter les données reçues, si tu reçois une collection d'objets dans ton retour, il te faut faire une boucle sur ta collection et traiter chaque objet pour ensuite les afficher dans ton code HTML.

on m'avait dmd d'utiliser une syntaxe de ce genre la

$("#div1").html(<div>);

comment fais-tu ta boucle en ajax ?

comment fais-tu ta boucle en ajax ?

Il n'y a pas de méthode spécifique pour faire des boucles avec de l'ajax, tu traites tes données comme tu le fais d'habitude en JavaScript quand tu n'utilises pas l'ajax.