C'est un ancien poste, mais je suis quand même d'envoyer un commentaire:
Supposons que vous voulez obtenir le code JSON généré par le fichier suivant, « get_json_code.php »:
<?php
$arr = array ('a'=>1,'b'=>2,'c'=>3,'d'=>4,'e'=>5);
echo json_encode($arr);
?>
Comme vous l'avez mentionné, $ .getJSON() utilise JSONP lorsque vous ajoutez un "jsoncallback =?" paramètre à la chaîne de l'URL requise. Par exemple:
$.getJSON("http://mysite.com/get_json_code.php?jsoncallback=?", function(data){
alert(data);
});
Cependant, dans ce cas, vous obtiendrez un message « label non valide » dans Firebug parce que le fichier « get_json_code.php » ne fournit pas une variable de référence valable pour contenir la chaîne JSON retournée. Pour résoudre ce problème, vous devez ajouter le code suivant au fichier « get_json_code.php »:
<?php
$arr = array ('a'=>1,'b'=>2,'c'=>3,'d'=>4,'e'=>5);
echo $_GET['jsoncallback'].'('.json_encode($arr).')'; //assign resulting code to $_GET['jsoncallback].
?>
De cette façon, le code JSON résultant sera ajouté à la « jsoncallback » GET variable.
En conclusion, le "jsoncallback =?" paramètre dans l'URL $ .getJSON() fait deux choses: 1) il définit la fonction pour utiliser JSONP au lieu de JSON et 2) spécifie la variable qui contiendra le code JSON extrait du fichier "get_json_code.php". Vous avez seulement besoin de vous assurer qu'ils ont le même nom.
Espérons que cela aide,
Vq.
S'il vous plaît nous montrer le Javascript rendu par la demande JSONP. – SLaks