/ / getJSON renvoie null ou rien du tout à cause de jquery ou php? - php, jquery, json

getJSON renvoie null ou rien du tout à cause de jquery ou php? - php, jquery, json

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 du jsonp 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.