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
dans mon fichier controller ya ça :
class MailboxController extends Controller
{
/**
@return void
*/
/private $m;
private $auth;/
public function __construct()
{
$this->middleware('auth');
}
/**
@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 :
data.Messages
vu que tu envois une variable nommée $Messages
dans l'index nommé Messages
.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.