2010-11-04 4 views
0

J'utilise cakephp 1.3 et j'ai l'intention de mettre à jour un <div> dans mon formulaire (* .ctp) avec les informations récupérées d'une table mysql.Utilisation de Ajax, jQuery et JSON IN CakePHP

Bien que j'ai parcouru plusieurs exemples dans ce site, aucun d'entre eux ne semble fournir une image complète. Ils semblent tous assumer une certaine connaissance de notre part et sauter une partie du code et n'en donner qu'une partie.

Je demande aux internes compétents de fournir un exemple complet simple de code de contrôleur cakephp, de code de vue cakephp et du script jQuery pour démontrer la fonctionnalité. Je demande aux pensionnaires de mettre en évidence comment gérer les messages d'erreur lancés par le contrôleur et les afficher de la façon dont cakephp s'affiche normalement.

L'exemple pourrait être aussi sous:

  • une student_controller manipulation de la table stockant les roll_no, name et age et class de tous les élèves.
  • a student_view fichier ctp qui va d'abord accepter le roll_no de l'étudiant que je dois savoir. Ce fichier ctp contient également un <div> vide avec des dispositions pour l'affichage du nom, l'âge et la classe - mais il est initialement caché. un bouton d'envoi pour soumettre le roll_no.
  • dès que le roll_no est entré et soumettre pressé, le jQuery passera le roll_no au contrôleur (comment cette fonction codée?)
  • le contrôleur trouvera le dossier et renvoyer les autres détails comme JSON-encodée . (veuillez fournir une syntaxe complète). Si l'enregistrement avec le roll_no n'est pas disponible, l'erreur sera retournée (peut être, comme une chaîne codée json).

Le fichier de vue devrait afficher les détails reçus dans le vide div ou afficher le message d'erreur se fait normalement dans CakePHP (s'il vous plaît fournir la syntaxe complète du script jQuery)

+2

votre clé CAPS-LOCK semble être cassé –

+0

@badp Avez-vous juste correct ce texte manuellement ou une sorte d'automatisme? Impressionnant! –

+2

@moontear Je ai googlé "convertisseur de cas phrase" :) – badp

Répondre

2

La partie jQuery:

$('form').submit(function(event){ 
    var roll_no = $('#StudentRollNo').val(); 
    $.getJSON('/student/details/' + roll_no, function(data){ 
     $('div#name').text(data.Student.name); 
     $('div#age').text(data.Student.age); 
     $('div#class').text(data.Student.class); 
    }); 
    return false; 
}); 

La partie CakePHP:

function details($roll_no) 
{ 
    $student = $this->Student->findByRollNo($roll_no); 
    echo json_encode($student); 
    exit; 
}