Question

J'ai essayé de faire une requête AJAX à un serveur externe. Je l'ai appris jusqu'à maintenant que je dois utiliser getJSON pour le faire pour des raisons de sécurité?

Maintenant, je ne peux pas sembler faire un simple appel à une page externe. J'ai essayé de le simplifier vers le bas autant que je le peux, mais il ne fonctionne toujours pas. J'ai 2 fichiers, test.html & test.php

mon test.html fait un appel comme celui-ci, à localhost pour le test:

    $.getJSON("http://localhost/OutVoice/services/test.php", function(json){
    alert("JSON Data: " + json);
});

et je veux que mon test.php pour revenir un simple 'test':

$results = "test";
echo json_encode($results);

Je suis probablement faire une erreur de recrue incroyable, mais je ne peux pas sembler comprendre. En outre, si cela fonctionne, comment puis-je envoyer des données sur ma page test.php, comme vous le feriez comme test.php? Id = 15?


La page test.html appelle la page test.php sur localhost, même répertoire Je ne reçois pas d'erreur, tout simplement pas alerte ..

Était-ce utile?

La solution

peut être que vous n'avez pas un rappel à test.php. En outre, json_encode accepte uniquement un tableau:

$results = array("key" => "value");
echo $_GET['callback'] . '(' . json_encode($results) . ')';
// the callback stuff is only needed if you're requesting from different domains

jQuery passe automatiquement à JSONP (à savoir l'aide de balises script au lieu de XMLHttpRequest) lorsque vous utilisez http://. Si vous avez test.html et test.php sur le même domaine, essayez d'utiliser des chemins relatifs (et pas callbacks).

Autres conseils

Soyez prudent avec la réponse de Moff. Il a une vulnérabilité XSS commune: http://www.metaltoad.com/blog/using- jsonp-en toute sécurité

La solution la plus simple serait d'ajouter le code ci-dessous avant toute sortie à votre fichier test.php, vous avez plus de flexibilité avec les méthodes que vous utilisez, un appel standard ajax devrait fonctionner.

header ('Access-Control-Allow-Origin: *');

Cependant, utilisez la chose de rappel JSON lorsque votre obtenir des données à partir d'un serveur hors de votre contrôle.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top