jQuery getJSON à la page PHP externe
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 ..
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.