Communication inter-domaines jQuery AJAX
Les requêtes AJAX inter-domaines rencontrent des limitations en raison des restrictions de la politique de même origine. Lorsqu'un script client sur un domaine tente d'accéder aux ressources d'un domaine différent, il échoue généralement en raison de problèmes de sécurité.
Cas :
Considérez le cas où test. php réside sur un hôte local, tandis que testserver.php est hébergé sur un serveur Web. Une requête AJAX de test.php à testserver.php échouera, déclenchant une alerte « Erreur » en raison de la nature inter-domaines de la requête.
Solution :
Pour surmonter cette limitation, JSONP (JSON with Padding) peut être employé.
jQuery :
$.ajax({ url: "testserver.php", dataType: "jsonp", // Note the lowercase 'p' in JSONP success: function (json) { // Handle successful response alert("Success"); }, error: function () { alert("Error"); } });
PHP :
<?php $arr = array("element1", "element2", array("element31", "element32")); $arr['name'] = "response"; echo $_GET['callback'] . "(" . json_encode($arr) . ");"; ?>
En PHP, le nom de la fonction de rappel est passé par jQuery est disponible via $_GET['callback']. En faisant écho à une réponse au format "callbackName('jsonString')", nous permettons à jQuery d'interpréter les données JSON.
Alternative :
jQuery fournit une méthode abrégée appelé $.getJSON() qui simplifie les requêtes AJAX inter-domaines. Cependant, cela nécessite d'ajouter "callback=?" à l'URL en tant que paramètre GET. jQuery remplace automatiquement cet espace réservé par sa méthode de rappel générée.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!