Transmission objets en php/ajax

Guillaume -  
 Guillaume -
Bonjour,
Je tente de faire un questionnaire en php avec ajax. J'affiche un bloc et en cliquant sur valider, je recherche ce petit bloc avec ajax.
J'arrive à atteindre la quatrième étape (readyState = 4 avec ajax). Mais au moment de générer ma réponse il y a un problème.

J'ai passer mon objet Questionnaire (contenant un id, un nom, et un tableau de Question) dans une variable de session afin de pouvoir la récupérer dans ma page où j'affiche ma réponse).

J'obtient ce message d'erreur :
Fatal error: main() [<a href='function.main'>function.main</a>]: The script tried to execute a method or access a property of an incomplete object. Please ensure that the class definition &quot;Questionnaire&quot; of the object you are trying to operate on was loaded _before_ unserialize() gets called or provide a __autoload() function to load the class definition in C:\wamp\www\phpAjax\reponseHTML.php on line 13


J'ai essayer les fonctions serialize et unserialize mais j'obtient le même résultat.



Voici ma page principale :
 <body>
   
   <?php
   
				include('question.php5');
				include('questionnaire.php5');
				
				
				
				$questionnaire = new Questionnaire(1);
				$question = 0;
				

				?>
   
       <form>

			<?php echo $questionnaire->getNom(); ?>
			<fieldset id="champs">
				<p><?php echo $questionnaire->getTabQuestion(0)->getNom(); ?></p>
				<p><input type="text" name="reponse" value="votre réponse" onfocus="this.value='';"/><p>
				

				<p><input type="submit" value="Valider, question suivante" onclick="envoyerRequeteAjax();"/></p>
				
				<p><input type="hidden" name="questionnaire" value="" />
				<input type="hidden" id="question" name="question" value="0" /></p>
			<?php $_SESSION['questionnaire'] = serialize($questionnaire); ?>
			</fieldset>
	   
	   </form>
	   
   </body>









et voici ma page où j'affiche ma réponse :

<?php
session_start();


	$idQuestion = $_POST['idQuestion'] + 1;
	$questionnaire = unserialize($_SESSION['questionnaire']);

	
	echo $idQuestion;
	
	
	echo '<p>'. $questionnaire->getNom() .' </p>';
	echo '<p><input type="text" name="reponse" value="votre réponse" onfocus="this.value=\'\';"/><p>';
	echo '<p><input type="submit" value="Valider, question suivante" onclick="envoyerRequeteAjax();"/></p>';
	echo '<p><input type="hidden" name="questionnaire" value="" /><input type="hidden" id="question" name="question" value="'.$idQuestion.'" /></p>';
	

	$_SESSION['questionnaire'] = $questionnaire;

?>
		



Avez vous une idée du problème?



A voir également:

2 réponses

Groarh Messages postés 682 Date d'inscription   Statut Membre Dernière intervention   185
 
Salut,
je traduis le message d'erreur :
«
Le script a tenté d'exécuter une méthode ou d'accéder à une propriété sur un objet incomplet. Assurez-vous que la définition de classe « Questionnaire » de l'objet que vous tentez de manipuler a été chargée avant l'appel à unserialize(), ou qu'elle possède une fonction __autoload() pour charger la définition de classe.
»
C'est assez clair : tu as oublié de charger la classe Questionnaire avant de désérialiser ton objet.
Jette un oeil au manuel : https://www.php.net/manual/fr/language.oop5.serialization.php

Bon courage ;)
1
Guillaume
 
Merci j'ai rajouté un include pour mes classes Questionnaire et Question et ça marche.
0