J'essaie de passer un json de php jquery, après avoir mis en place une requête sql et obtenir l'erreur de javascript suivante.
JSON.parse: unexpected character
La fonction à renvoyer résultat de sql:
public function selectassocSql($sql){ $i = 0; $resSelect = array(); mysql_query("SET NAMES 'utf8'"); $result = mysql_query($sql); while ( $row = mysql_fetch_assoc($result) ) { $resSelect[$i] = $row; $i++; } mysql_free_result($result); return $resSelect; }
Après avoir utilisé cette fonction de cette manière,
$sql = "SELECT id, code, name FROM table WHERE code LIKE '%$codcli%' "; $v = $data->selectassocSql($sql); echo json_encode($v, JSON_FORCE_OBJECT);
Et le code javascript est le suivant:
$('#formclientes').submit(function(e){ e.preventDefault(); $.ajax({ type: 'POST', url:$(this).attr('action'), data:$(this).serialize(), success:function(data) { //console.log("SUCCESS " + data); var json_cli = $.parseJSON(data); } }) })
Comment puis-je corriger cette erreur et comment je peux lire un json de jquery?
Vous n'avez pas besoin de l'appel $.parseJSON
puisque jQuery le fait automatiquement car si vous ne spécifiez pas une propriété dataType
, jQuery essaie de l'admettre et appelle la fonction correcte pour analyser la réponse avant que les données ne soient traitées à la fonction de réussite
$.ajax({ type: 'POST', url:$(this).attr('action'), data:$(this).serialize(), success:function(data) { //console.log("SUCCESS " + data); var json_cli = data; } })
Vérifiez également cette question Pourquoi 'jQuery.parseJSON' n'est-il pas nécessaire?
Je viens de rencontrer cela dans FF10.0.2 avec des données qui ressemblaient à:
[ { "firstName": 'Joe', "lastName": 'Smith' } ]
(Avec plusieurs objets dans le tableau – raccourci pour plus de clarté)
Il a effectivement analysé OK en utilisant eval, au lieu de JSON.parse. (Je n'utilise pas jQuery ici.)
Le problème s'est éloigné lorsque j'ai changé «pour» pour les valeurs:
[ { "firstName": "Joe", "lastName": "Smith" } ]
Je pensais que l'exigence était uniquement pour les noms de propriétés, pas les valeurs de données.