/ / Jquery Ajax Call altère mes données - php, jquery, mysql, ajax

Jquery Ajax Call est en train de corrompre mes données - php, jquery, mysql, ajax


s'il vous plaît aider à expliquer pourquoi mes appels ajax via jQuery corrompent mes données? j'ai déjà configuré ma base de données mysql pour l'utiliser utf8_general_ci,

  1. J'ai déjà essayé d'ajouter des éléments à ma base de données mysql via phpmyadmin et les caractères chinois sont complets et n'ont pas changé.
  2. J'ai également essayé de créer une page php simple pour insérer le même jeu de caractères chinois, d'exécuter la page php et de vérifier la sortie dans phpmyadmin.
  3. Cette fois, insérez le même jeu de caractères chinois via jquery $ .ajax, mais ne l'envoyez pas d'abord au mysql mais imprimez au format html .. Le même jeu et aucun changement effectué ...
  4. En utilisant la page php en # 2, utilisez ajax et INSERT now dans la base de données ... certains caractères sont maintenant manquants et sont remplacés par "???" ..

aucune idée de ce qui se passe? J'ai aussi essayé de faire écho à ma requête $ et cela me donne le caractère déjà manquant avant son envoi à la base de données

Merci

Réponses:

4 pour la réponse № 1

pour résoudre ce problème, essayez de définir le type d'ocntent dans la requête ajax:

...
jQuery.ajax({
type: "POST",
url: "../ajax/setting",
cache: false,
dataType: "json",
data: "user.id=current&update=true&user.setting=" + key + "&user.settingValue=" + escape(value),
contentType: "application/x-www-form-urlencoded; charset=utf-8",
beforeSend: function(x) {
if((x) && (x.overrideMimeType))
x.overrideMimeType("application/j-son; charset=utf-8");
},
...

L'astuce beforeSend pourrait également aider dans votre cas. J'ai découvert que dépendre de la manière dont vous envoyez les données, elles pourraient être codées de manière très différente. Si vous souhaitez soumettre des données longues avec charset, assurez-vous de les encoder en premier:

c'est à dire. submitdata est une chaîne json:

submitType = "POST";
submitdata = "data=" + encodeURIComponent(submitdata);
jQuery.ajax({
type: submitType,
url: url,
cache: false,
data: submitdata,
dataType: "json",
contentType: "application/x-www-form-urlencoded; charset=utf-8",
beforeSend: function(x) {
if((x) && (x.overrideMimeType))
x.overrideMimeType("application/j-son; charset=utf-8");
return true;
},

sur le serveur, je prends le paramètre de requête "data" et le convertis en objet.

J'espère que cela t'aides