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

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

Susan Sarandon
Susan Sarandonoriginal
2024-12-18 09:49:10143parcourir

How Can JSONP Solve Cross-Domain AJAX Issues in jQuery?

AJAX inter-domaines avec jQuery

La fonctionnalité AJAX de jQuery est un outil essentiel pour le développement Web dynamique. Cependant, lors de l'exécution de requêtes AJAX sur différents domaines, vous pouvez rencontrer des problèmes de partage de ressources d'origine croisée (CORS).

L'un de ces problèmes survient lorsque test.php et testserver.php résident sur des serveurs distincts, ce qui entraîne un message " Alerte "Erreur" déclenchée. En effet, les mesures de sécurité du navigateur limitent par défaut les requêtes AJAX provenant de différentes origines.

Solution : JSONP

Pour surmonter CORS, JSONP (JSON with Padding) peut être utilisé. JSONP utilise une approche différente en chargeant dynamiquement un script depuis le serveur distant, évitant ainsi le CORS restrictions.

Mise en œuvre

jQuery :

$.ajax({
  url: "testserver.php",
  dataType: 'jsonp', // Specify JSONP data type
  success:function(json){
    // Process JSON data
    alert("Success");
  },
  error:function(){
    alert("Error");
  }      
});

PHP :

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

Notez que l'instruction echo de PHP est conçue pour envelopper les données JSON dans la fonction de rappel fournie par jQuery, y compris les guillemets appropriés.

Alternativement, $.getJSON() de jQuery peut être utilisé comme méthode abrégée, en ajoutant "callback=?" en tant que paramètre GET de l'URL. jQuery générera automatiquement la fonction de rappel appropriée en fonction de ce paramètre.

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!

Déclaration:
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