Bonjour,
Voila je rencontre un petit problème avec mon code.
Je developpe une appli mobile avec AngularJS avec un Rest en php.
Après beaucoup de recherches et de tests, je n'ai plus de cheveux à arracher....
Cela fait plusieurs jours que je bloque sur le problème d'accent dans mes appels http.
J'ai essayé plein de choses comme l'UTF8 partout, encodeURI(), et autres mais rien ne va.
Je pense que le problème vient du http.get de l'appli car dans la console, je récupère un beau BAD REQUEST.
Quand je teste l'url en dans la barre d'adresse ça passe...
J'ai essayé vraiment beaucoup de choses mais là je comprends plus.
Voici mon code :
main page
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
js
Le problème d'accent se trouve sur $scope.produit_critere
var url = $scope.srvurl+"getproduit&val1="+$sessionId.user_id+"&val2="+$scope.produit_critere;
$http.get(url).success(httpSuccess).error(httpError);
Coté Rest
<?php
header("Access-Control-Allow-Origin: *");
header("Content-Type:application/json; charset=UTF-8");
include("rstfunc.php");
Dans l'état actuel et avec toutes les modifications que j'ai pu trouver, je prends direct : 400 BAD REQUEST
Un p'ti coup de main ?
Merci bcp
Salut,
Utilise la méthode encodeURIComponent()
https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Objets_globaux/encodeURIComponent
var url = $scope.srvurl + "getproduit?val1=" + encodeURIComponent($sessionId.user_id ) + "&val2=" + encodeURIComponent($scope.produit_critere);
Fais attention : il faut peut-être décoder côté serveur (je ne suis pas sûr).
Merci betaWeb pour ta rapidité.
Cependant j'ai toujours la même erreur...
Encore quelques petites précisions, j'utilise pour le dév Chrome + Ripple et avec ton exemple, je récupère exactement la même erreur.
Ce qui est bizarre, c'est que l'url parait bien encodée genre :
(cette url en direct dans la barre d'adresse fonctionne)
https://...?action=getproduit&val1=26&val2=r%C3%A9c (ici pour "réc")
et direct dans la console :
https://rippleapi.herokuapp.com/xhr_proxy?tinyhippos_apikey=ABC&tinyhippos_rurl=https%3A//...%3Faction%3Dgetproduit%26val1%3D26%26val2%3Dr%25C3%25A9c 400 Bad Request
Peut-être un bug de Ripple ?
Normalement, une erreur de type 400 c'est côté serveur ;)
Donc je t'invite à déboguer ton script PHP.
Merci encore pour tes réponses mais comme je l'ai indiqué plus haut lorsque je mets l'url dans la barre d'adresse de mon navigateur pour tester côté serveur cela fonctionne parfaitement.
La seul chose qui se passe lorsque je valide, c'est que le "r%C3%A9c" se transforme en "réc" dans la barre d'adresse.
Je vais tout de même vérifier côté serveur mais je pense que cela plante au moment ou l'appel est fait donc je ne pense pas que cela arrive jusqu'au serveur.
Alors,
J'ai essayé des choses côté serveur, j'ai même été juqu'à recuperer l'url complète envoyée côté srv et l'afficher.
Je te confirme donc que d'après mes tests le problème est bien dans l'appli car dès que je mets un accent plus rien ne part.
J'espère que tu as encore une idée ^^
Merci
Ahhhh !
Sans Ripple ça passe.
Après j'ai choppé un periphérique mobile et ça fonctionne aussi, bizarre ce Ripple...
Bon du coup ma requete est sensible aux accents dommage... mais bon je vais faire des recherches ;-)
Si je suppose que le problème n'est lié qu'à Ripple : Merci beaucoup de ton aide !!