Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > JavaScript > Bibliothèques & Frameworks > jQuery
jQuery Forum d'entraide sur le framework jQuery. Avant de poster : Tutoriels jQuery, FAQ jQuery, Tous les tutoriels JavaScript, Toutes les FAQ JavaScript
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 30/03/2011, 16h51   #1
Membre du Club
 
Inscription : mars 2008
Messages : 274
Détails du profil
Informations forums :
Inscription : mars 2008
Messages : 274
Points : 50
Points : 50
Par défaut jquery et classe PHP

Bonjour/ bonsoir,

Je viens de réécrire une petite application en POO PHP. Dans une version précédente (donc en procédurale), je n'avais pas de soucis existentiels quant à faire dialoguer les fonction ajax de jquery avec le PHP. Mais maintenant, je dois avouer que je me retrouve tout bête, car je ne peux pas accéder directement à l'objet et à ses méthodes. Et je n'ai aucune idée de comment procéder sur ce coup là...
Merci à celui/ celle qui voudrait bien m'orienter...
yann18 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/03/2011, 15h34   #2
Membre du Club
 
Inscription : mars 2008
Messages : 274
Détails du profil
Informations forums :
Inscription : mars 2008
Messages : 274
Points : 50
Points : 50
Je vais tâcher d'apporter quelques précisions supplémentaires avec du code:
Côté java-script, j'ai le script suivant:
Code :
1
2
3
4
5
6
7
8
9
10
$('#newCompte').submit(function(){
        $.post('newCompte.php', $('#newCompte').serialize(), function(data){
            if(data != ''){
                $('#message').append('Le compte a bien été créé');
            } else{
                $('#message').append('Le compte n\'a pas été créé');
            }
        });
        return false;
    });
Et dans 'newCompte.php', j'ai:
Code :
1
2
3
4
5
6
7
8
9
10
<?php
if (!empty($_POST)) {
    $editComptes->newCompte($_POST);
}
//------------------------------------------------------------------------
?>
<h2>Création d'un compte</h2>
...
<form name="newCompte" id="newCompte" method="post" action="">
<!-- formulaire en question qui envoie les données-->
Mais je butte bien sur l'objet:
Citation:
Undefined variable: editComptes in C:\wamp\www\...
Comment pour faire communiquer ces deux parties ?
merci,
yann18 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/03/2011, 15h53   #3
Expert Confirmé
 
Avatar de RunCodePhp
 
Inscription : janvier 2010
Messages : 2 709
Détails du profil
Informations personnelles :
Localisation : Réunion

Informations forums :
Inscription : janvier 2010
Messages : 2 709
Points : 3 279
Points : 3 279
Salut

La page "newCompte.php" qu'appel Ajax est une tout autre page, donc totalement indépendant de celle où se trouve le code Ajax.

Il faut donc inclure tout ce que celle ci à besoin, comme inclure la classe où $editComptes serait à l'origine.
Après vient d'autres problèmes que sont la persistance des données.
Là, faut voir.

En tout cas, il faut bien visualiser que ce que fait l'Ajax c'est de lancer une requête HTTP à ton serveur, et en attendre une réponse (soit du HTML, Json, etc ...) au même titre que tout autre page.


Aussi, de mon coté j'appel jamais $.post directement, même si c'est plus directe, j'exploite plutôt :
Code :
1
2
3
4
5
6
$.ajax({
type: "POST",
url: "/unePage/index/",
data: "...les paramètres...",
... etc ...
});
__________________
Win XP | WampServer 2.2d | Apache 2.2.21 | Php 5.3.10 | MySQL 5.5.20
Si debugger, c'est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra]
RunCodePhp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/03/2011, 16h02   #4
Rédacteur/Modérateur
 
Avatar de SpaceFrog
 
Homme
Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Inscription : mars 2002
Messages : 30 007
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Royaume-Uni

Informations professionnelles :
Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Secteur : Industrie

Informations forums :
Inscription : mars 2002
Messages : 30 007
Points : 45 091
Points : 45 091
coté php dans ta page tu fais des include des classes ? je ne les vois pas
__________________
Ma page Developpez
Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
Votre post est résolu ? Alors n'oubliez pas le Tag


réalisations :www.planet-languages.com|www.saftair.com| www.ouestisol.fr | www.sebemex.fr | www.extramiante.fr | www.sistac-alizay.fr | www.acoustishop.fr | www.litt.fr | www.ouestventil.fr
SpaceFrog est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/03/2011, 17h02   #5
Membre du Club
 
Inscription : mars 2008
Messages : 274
Détails du profil
Informations forums :
Inscription : mars 2008
Messages : 274
Points : 50
Points : 50
Oté ! comment y lé ? Eh oui, je viens aussi de la Réunion !
Pour en revenir à mes affaires, newCompte.php est inclu dans un fichier (parent) dans lequel je fais appel à toutes les classes, y compris celle pour le fonctionnement de newCompte.php... Ce qui donne brièvement:
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
// Tous les fichiers nécessaires au fonctionnement de l'application
include_once '../system/connect.php';
include_once '../system/checkSession.php';
...
include_once '../classes/classEditComptes.php'; //classe contenant la méthode newCompte 
?>
<html xmlns="http://www.w3.org/1999/xhtml" lang="fr">
<head>
...
<div id="mainContent">
      <?php
      switch ($content) {
      	case "search" : include 'searching/searching2.php';
        break;
        case "new" : include 'newCompte.php';
        break;
        default : include 'searching/searching2.php';
      } ?>
    </div>
...
La partie PHP est bien opérationnelle... Et le java-script est intégré dans ce même fichier.
yann18 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/03/2011, 19h19   #6
Expert Confirmé
 
Avatar de RunCodePhp
 
Inscription : janvier 2010
Messages : 2 709
Détails du profil
Informations personnelles :
Localisation : Réunion

Informations forums :
Inscription : janvier 2010
Messages : 2 709
Points : 3 279
Points : 3 279
Citation:
Oté ! comment y lé ?
Et ben lé là marmaille

Citation:
Undefined variable: editComptes in C:\wamp\www\...
Si la classe est bien incluse, alors c'est au niveau de son instanciation que ça poserait problème.
$editComptes ne serait pas instancié, donc n'existerait pas.



Citation:
... newCompte.php est inclu dans un fichier (parent) dans lequel je fais appel à toutes les classes, y compris celle pour le fonctionnement de newCompte.php...
Oui, que le fichier newCompte.php soit inclus dans un fichier parent, surement, mais l'Ajax lui fait appel à newCompte.php, et uniquement, pas au fichier parent (conteneur on va dire).

Le problème maintenant c'est que si tu appel le fichier parent, c'est tout le code qui sera exécuté, et du coup tout le contenu HTML y compris le doctype, etc ... qui sera retourné.
Ce n'est pas le but recherche je suppose.

Comme ça au feeling, et pour résoudre ce problème rapidement, il faudrait créer un autre fichier qui lui intègrera le stricte minimum obligatoire, comme inclure les classes nécessaires, et cette fois sans tout ce HTML qui théoriquement ne serait pas correcte.
L'Ajax ferait appel à ce nouveau fichier.
Au bout, suffit de renvoyer ce qui est attendu.
__________________
Win XP | WampServer 2.2d | Apache 2.2.21 | Php 5.3.10 | MySQL 5.5.20
Si debugger, c'est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra]
RunCodePhp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/04/2011, 11h01   #7
Membre du Club
 
Inscription : mars 2008
Messages : 274
Détails du profil
Informations forums :
Inscription : mars 2008
Messages : 274
Points : 50
Points : 50
Salut,

J'ai fini par isoler les fichiers incriminés. C'était effectivement je pense un problème d'appel de classe... mais il faut également que je revoie légèrement mon organisation de fichiers...
Merci,
Nou la trouvé alors!
Ps : tu es de quel côté de l’île ?
yann18 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/04/2011, 11h02   #8
Rédacteur/Modérateur
 
Avatar de SpaceFrog
 
Homme
Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Inscription : mars 2002
Messages : 30 007
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Royaume-Uni

Informations professionnelles :
Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Secteur : Industrie

Informations forums :
Inscription : mars 2002
Messages : 30 007
Points : 45 091
Points : 45 091
plus simplement il me semble que jquery permet de ne prendre qu'une partie d'une page chargée par ajax

Code :
$("#destination").load('source.php #elementunique')
ainsi tu ne récupères que la partie souhaitée de la page source.

C'est pas optimum dans le sens ou ça fait bosser le serveur pour une page complète alors que tu n'en utilises qu'une partie.
Mais ça t'évites d'avoir a recoder
__________________
Ma page Developpez
Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
Votre post est résolu ? Alors n'oubliez pas le Tag


réalisations :www.planet-languages.com|www.saftair.com| www.ouestisol.fr | www.sebemex.fr | www.extramiante.fr | www.sistac-alizay.fr | www.acoustishop.fr | www.litt.fr | www.ouestventil.fr
SpaceFrog est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/04/2011, 11h16   #9
Membre du Club
 
Inscription : mars 2008
Messages : 274
Détails du profil
Informations forums :
Inscription : mars 2008
Messages : 274
Points : 50
Points : 50
Merci!
yann18 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 03h37.


 
 
 
 
Partenaires

Hébergement Web