Bonjour,
Je veux faire de l'appel à des services rests avec de l'Ajax, j'ai donc :
JQuery -> appel Ajax -> Serveur Php -> retour (json)
Pour l'appel, j'utilise la méthode JQuery "$.ajax", qui permet de spécifier un comportement de retour en cas de succès ou d'erreur en fonction du statut http retourné, voilà le code de l'appel :
Et voilà mon code PHP :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 $.ajax({ url:"/restservice/ConnexionRestService.php", type:"GET", data:"cmd=login&profil="+JSON.stringify($scope.profil), dataType:"json", success: function(data){ alert('OK : ' + data.responseText); }, error:function (data) { alert('error : ' + data.responseText); } });
Code php : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33 try { $profil = ParameterGetter::getRequestParameter("profil",true); $compte = CompteService::getCompte($profil["login"], $profil["password"]); ParameterGetter::setSessionParameter("compte", $compte); $this->response($this->json($compte), 200, 'json'); } catch (MissingDataException $e) { $resultatJSON = $this->json(array("listeMessageErreur", "Impossible de se connecter, mauvais login/mot de passe")); $this->response($resultatJSON, 204,'json'); } public function response($data,$status,$format){ $this->_code = ($status)?$status:200; $this->set_headers($format); echo $data; exit; } private function set_headers($format){ header("HTTP/1.1 ".$this->_code." ".$this->get_status_message()); //header("Content-Type:".$this->_content_type); if($format =='json') { header("Content-Type:".$this->json_content_type); } elseif($format =='xml') { header("Content-Type:".$this->xml_content_type); } else { header("Content-Type:text/plain"); } }
Dans mon test, je passe un mauvais login/mot de passe. en l'état actuel des choses, quand je teste, la MissingDataException est catchée dans le php, et le code renvoyé est 204.
Mon code va dans la méthode de retour "Success", mais là "data" est égal à null.
Ce qui est très perturbant, c'est que si je change, dans mon php, le 204 par 404, mon code exécuté est celui de la méthode de retour error, et là mon message d'erreur est bien présent dans le data...
Dites moi si d'autres parties du code peuvent être utiles à la compréhension du problème, mais là je sèche complet...
Une idée?
Merci d'avance !
Partager