jQuery ajax POST json
Donc, voici ma question ( je n'ai d'étude et d'essayer de résoudre mon problème en regardant d'autres problème similaire posté ici, mais ne fonctionne pas )
Extrait de code (Ignorer les accolades et les choses):
json_string = JSON.stringify(json_links);
var data_obj = { id:n_id, links_json: json_string };
$.ajax({
url: 'server_api',
type: 'GET',
data: data_obj,
dataType: 'json',
Sur le côté serveur, j'essaie de décoder en utilisant le module perl, JSON et de la fonction, decode_json mais elle lève une exception, 'mal formé de caractères UTF-8 dans la chaîne JSON, au décalage de caractères 48 (avant "\x{92f}t-il-...") '
J'ai essayé d'utiliser la méthode "POST" & contenu-type de combinaison, mais il ne fonctionne pas. jQuery documentation de préciser qu'il encode en UTF-8 par défaut? S'il vous plaît aider?
- Bon exemples de code serait bénéfique pour obtenir la réponse à votre question.
- Également poster votre code côté serveur.
- Jetez un oeil à stackoverflow.com/questions/6905164/...
- De côté de serveur de code est 1 ligne qui reçoit l'appel ajax et de décoder le format json à l'aide, decode_json? pas beaucoup sur le côté serveur, mais pour votre référence ici est la suivante: (En perl), l'utilisation de JSON; my $chaine = decode_json($data); # $data est le json chaîne codée. Permettez-moi de savoir si c'est clair...
- Ignorer les accolades et les choses!? "Les accolades et les choses" a ramené des civilisations entières.
Vous devez vous connecter pour publier un commentaire.
Vous êtes probablement en passant des caractères Unicode codés à decode_json, pas binaire des caractères UTF-8. Voir ici pour la question et les deux méthodes de résolution possibles.
Quelques autres choses que vous ne pouvez pas échapper à des noms d'entité (je suppose que ceux qui sont destinés à être des noms d'entité dans et d'eux-mêmes, compte tenu de leurs valeurs associées) dans votre data_obj. C'est plutôt d'essayer d'insérer le contenu de ces variables. Je suis en supposant que vous vouliez ceux à la identificateurs d'eux-mêmes:
data_obj = { 'id' : n_id, 'links_json' : json_string }
Sauf si vous êtes tout simplement d'accéder à des données déjà stockées sur le serveur en utilisant cela, vous devriez envisager d'utiliser la POSTE (ou PUT) au lieu de cela, pour être plus correctement Reposant.
Aussi, faire est effectuée en ajoutant à l'URL, et vous devez être conscient de:
Parce que les données de l'URL ajouté, même si votre javascript est d'essayer d'envoyer correctement binaire encodé en UTF-8, il peut encore se traduire en Unicode.
De plus,
datatype
est pas pertinent pour les données vous sont envoi et se réfère à ce que des données vous attendre à recevoir retour. Je suppose que vous vous en rendez compte mais je voulais être sûr.De sorte que vous pouvez stringify votre
data_obj
vous-même plutôt que de laisser.ajax
le faire pour vous.Avez-vous essayé de simplement l'écho de votre reçu (côté serveur) données brutes (sans l'exécution d'un décodage json) pour voir ce que vous allez recevoir côté serveur, et si elle correspond à ce que vous attendiez? Il est difficile de dire quel est ton problème sans nécessairement un échantillon de données, qui réplique pour vous. Je suppose que ça va être liées à Perl de la fonction json_decode et liées à des problèmes de codage (la première ligne ici), cependant.
Essayer de passer les données en tant que stringified JSON.