2010-07-15 6 views
0

J'utilise PHP pour extraire les événements d'un FullCalendar en tant que flux JSON, mais je dois prendre en charge plusieurs domaines. J'ai besoin d'une variable querystring pour spécifier quel calendrier extraire les événements ... est-ce que cela cause un problème? Voici le code d'initialisation FullCalendar:Flux JSON interdomaines pour le plugin jQuery FullCalendar

$('#full-calendar".$id."').fullCalendar({ 
    editable: false, 
    events:'http://www.mydomain.com/resources/include/calendar-events.php?cal=".$id."', 
    loading: function(bool) { 
     if (bool) $('#loading').show(); 
     else $('#loading').hide(); 
    } 
}); 

La documentation dit: « Si vous avez besoin d'accéder à une alimentation qui est dans un domaine différent, vous pouvez utiliser JSONP avec votre URL (voir la discussion JSONP à $.ajax)?. "

Mais je ne suis pas sûr exactement comment faire cela.

Merci pour votre aide à l'avance.

Répondre

1

Bien à un niveau élevé, JSONP vous permet de spécifier le nom d'une fonction de rappel que vous souhaitez appeler lorsque la requête AJAX renvoie avec des données. Les opérations HTTP GET peuvent se produire dans différents domaines (lorsque vous incorporez une image d'un hôte différent, vous créez un HTTP GET). POST (et PUT, DELETE etc) sont limités au même domaine que le document (c'est ce qu'on appelle la politique de même origine). JSONP, ajoute un paramètre supplémentaire (généralement 'callback') avec la valeur d'une fonction JavaScript dans votre document (la fonction callback). Le serveur qui envoie le JSON doit savoir pour extraire la valeur de ce paramètre. Votre demande pourrait ressembler à ceci:

GET http://ical.example.com/cal.json?callback=_calDraw 

Le servlet cal.json retournera ce

_calDraw({event:{date:'12/25/2010',title:'Jason\'s birthday'}}); 

Maintenant ce bit JavaScript fait référence à la fonction de rappel que vous avez passé en elle, mais sans

correspondant
function _calDraw(data) { 
    //render stuff 
    } 

Les données retournées échoueront simplement. Il est important que vous ayez un certain niveau de confiance avec les serveurs auxquels vous appelez JSONP, car vous leur donnez l'autorisation d'exécuter JavaScript dans votre document (ils n'ont pas besoin de renvoyer quelque chose de valide).

Espérons que cela aide!

Questions connexes