J'envoie une requête ajax avec 2 valeurs de publication, la première est "action" qui définit les actions que mon script php doit analyser, l'autre "id" qui est l'identifiant de l'utilisateur pour lequel il doit analyser le script.
Le serveur renvoie 6 valeurs dans un tableau () et est ensuite encodé en JSON avec le PHP function: json_encode();
Certaines de mes réponses sont en HTML, mais lorsque je l’encode en JSON, il échappe à "/"
Et devient donc "\/"
.
comment désactiver cela?
aussi, quand je ne sais pas comment afficher cela dans jQuery quand j’obtiens la réponse du serveur, j’ai juste pensé que tout mettre dans un div afficherait simplement les nombres et les codes HTML que j’avais demandés, mais le tableau tel qu'il est encodé en PHP.
PHP
$response = array();
$response[] = "<a href=''>link</a>";
$response[] = 1;
echo json_encode($response);
jQuery:
$.ajax({
type: "POST",
dataType: "json",
url: "main.php",
data: "action=loadall&id=" + id,
complete: function(data) {
$('#main').html(data.responseText);
}
});
comment puis-je faire cela pour travailler JSON?
Vous devez appeler le
$.parseJSON();
Par exemple:
...
success: function(data){
var json = $.parseJSON(data); // create an object with the key of the array
alert(json.html); // where html is the key of array that you want, $response['html'] = "<a>something..</a>";
},
error: function(data){
var json = $.parseJSON(data);
alert(json.error);
} ...
voir ceci dans http://api.jquery.com/jQuery.parseJSON/
si vous avez toujours le problème des barres obliques: recherchez security.magicquotes.disabling.php ou: function.stripslashes.php
Remarque:
Cette réponse s’adresse ici à ceux qui essaient d’utiliser $.ajax
Avec la propriété dataType
définie sur json
et même si le type de réponse est mauvais. Définir la header('Content-type: application/json');
sur le serveur peut résoudre le problème, mais si vous renvoyez text/html
Ou tout autre type, la méthode $.ajax
Doit le convertir en json
. Je fais un test avec les anciennes versions de jQuery et seulement après la version 1.4.4
La force $.ajax
Pour convertir tout type de contenu en dataType
passée. Donc, si vous avez ce problème, essayez de mettre à jour votre version de jQuery.
Premièrement, cela vous aidera si vous définissez les en-têtes de votre PHP pour servir JSON:
header('Content-type: application/json');
Deuxièmement, cela vous aidera à ajuster votre appel ajax:
$.ajax({
url: "main.php",
type: "POST",
dataType: "json",
data: {"action": "loadall", "id": id},
success: function(data){
console.log(data);
},
error: function(error){
console.log("Error:");
console.log(error);
}
});
En cas de succès, la réponse que vous recevez doit être capturée en tant que véritable JSON et un objet doit être consigné sur la console.
REMARQUE: Si vous souhaitez utiliser du code HTML pur, vous pouvez envisager d'utiliser une autre méthode pour JSON, mais je recommande personnellement d'utiliser JSON et de le rendre au format HTML à l'aide de modèles (tels que Handlebars js ).
Connectez votre contrôleur javascript clientside et votre contrôleur php serveride en utilisant l'envoi et la réception de codes opération avec des données liées. Donc, votre code php peut envoyer comme réponse delta fonctionnel pour le récepteur/auditeur js
voir https://github.com/ArtNazarov/LazyJs
Désolé pour mon mauvais anglais
Puisque vous créez un balisage en tant que chaîne, vous ne devez pas le convertir en json. Envoyez-le simplement car il combine tous les éléments du tableau en utilisant la méthode implode
. Essaye ça.
Changement de PHP
$response = array();
$response[] = "<a href=''>link</a>";
$response[] = 1;
echo implode("", $response);//<-----Combine array items into single string
JS (Modifiez le type de données de json en html ou ne le définissez pas, jQuery le comprendra)
$.ajax({
type: "POST",
dataType: "html",
url: "main.php",
data: "action=loadall&id=" + id,
success: function(response){
$('#main').html(response);
}
});