Maison > interface Web > js tutoriel > Comment JSONP peut-il résoudre les problèmes AJAX inter-domaines de jQuery ?

Comment JSONP peut-il résoudre les problèmes AJAX inter-domaines de jQuery ?

Mary-Kate Olsen
Libérer: 2024-12-30 09:32:14
original
326 Les gens l'ont consulté

How Can JSONP Solve jQuery's Cross-Domain AJAX Problems?

Dilemme inter-domaines jQuery AJAX : contourner CORS avec JSONP

Interagir avec des données sur différents domaines pose des défis en raison du partage de ressources d'origine croisée (CORS). Lorsque vous tentez d'effectuer une requête AJAX d'un domaine à un autre, telle que test.php sur localhost et testserver.php sur un serveur distant, les navigateurs appliquent ces restrictions, entraînant des alertes « Erreur ».

Pour surmonter ce problème obstacle, JSONP (JSON with Padding) apparaît comme une solution de contournement viable. Il exploite la flexibilité des éléments de script pour récupérer des données sur plusieurs domaines.

Modifications jQuery :
Modifiez test.php pour utiliser JSONP en changeant le paramètre dataType en 'jsonp'.

Modifications PHP :
Ajustez testserver.php pour faire écho à la réponse JSONP avec le rappel fourni par jQuery.

Mise en œuvre :

jQuery (test.php) :

$.ajax({
    url: "testserver.php",
    dataType: 'jsonp', // Notice! JSONP <-- P (lowercase)
    success: function(json){
        // do stuff with json (in this case an array)
        alert("Success");
    },
    error: function(){
        alert("Error");
    }       
});
Copier après la connexion

PHP (testserver.php) :

<?php
$arr = array("element1", "element2", array("element31", "element32"));
$arr['name'] = "response";
echo $_GET['callback'] . "(" . json_encode($arr) . ");";
?>
Copier après la connexion

Méthode simplifiée utilisant $.getJSON() :
Vous pouvez également utiliser la méthode abrégée $.getJSON(), qui automatiquement ajoute 'callback=?' à l'URL en tant que paramètre GET.

$.getJSON("testserver.php", function(json){
    // do stuff with json (in this case an array)
    alert("Success");
});
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal