J'ai créé un fichier php pour renvoyer des données encodées avec JSON, puis utilisé getJSON
pour le lire. J'essaie d'obtenir des informations d'une source et de les distribuer à plusieurs endroits. J'ai changé le type de contenu permettant également tous les accès avec des en-têtes. À ce stade, je suis coincé. Des idées comment faire fonctionner cela?
PHP
header("Cache-Control: no-cache, must-revalidate");
header("Content-type: application/json");
header("Access-Control-Allow-Origin: *");
$search_terms = curlData();
$json = array("term" => $search_term);
echo $_GET["callback"] . "(" . json_encode($json) . ");";
la sortie pour ce fichier php est la suivante:
({"term":"sandwich city"});
Voici le jQuery que j'utilise pour récupérer les informations json
$.getJSON("http://MYWEBSITE.com/terms.php?callback", function(data) {
alert(data);
});
Un séjour sans faille
Réponses:
1 pour la réponse № 1({"term":"sandwich city"});
n'est pas valide JSONP. Vous manquez le nom de la fonction.
Ajouter =?
à votre URL, de sorte que jQuery génère automatiquement une fonction pour gérer la réponse:
http://MYWEBSITE.com/terms.php?callback=?
Du Documentation:
Si l'URL comprend la chaîne
"callback=?"
(ou similaire, tel que défini par l'API côté serveur), la demande est plutôt traitée comme JSONP. Voir la discussion dujsonp
type de données dans$.ajax()
pour plus de détails.
Btw, si vous envoyez JSONP en réponse, définissez le type de contenu de la réponse sur application/json
n'est pas correcte. La réponse est simplement JavaScript.
En outre, comme vous l'avez spécifié, Access-Control-Allow-Origin
En-tête, vous ne devez absolument pas utiliser JSONP, vous pouvez passer un appel AJAX normal et renvoyer JSON.