Domanda

Ho un plugin esistente jQuery che fa un sacco di chiamate AJAX (per lo più JSON). Mi chiedo che cosa è il più veloce per consentirle di fare cross-site chiama vale a dire il $ .get e $ .post URL non sarà dallo stesso dominio.

Ho sentito parlare di JSONP, ma chiedevo se qualcuno mi potrebbe dare un esempio concreto per andare su tutto il processo. Voglio fare modifiche minime, se possibile, a mio script. Dovrei usare un proxy.php di sorta?

Grazie per il vostro tempo.

È stato utile?

Soluzione

JSONP vi permetterà di fare le chiamate cross-site. Vedere docs jQuery su tale questione.

Il concetto è semplice: invece di fare una normale chiamata Ajax, jQuery aggiungerà un tag <script> al vostro <head>. Al fine di far funzionare tutto questo, i dati JSON ha bisogno di essere avvolto in un funzione di chiamata.

Il server ha bisogno di inviare informazioni in modo tale (PHP esempio):

$json = json_encode($data);
echo $_GET['jsonp_callback'] . '(' . $json . ');';

Quindi, è possibile utilizzare jQuery per recuperare queste informazioni:

$.ajax({
  dataType: 'jsonp',
  jsonp: 'jsonp_callback',
  url: 'http://myotherserver.com/getdata',
  success: function () {
    // do stuff
  },
});

Maggiori informazioni sono disponibili qui: Qual è JSONP ?

Altri suggerimenti

Se si ha il controllo sul dominio remoto o il dominio remoto ha un crossdomain. xml si può cadere in una libreria come flXHR in concomitanza con la sua plugin jQuery

È inoltre possibile utilizzare CORS invece di JSONP, funziona con FF, Chrome, Safari. CORS è meno fastidioso da installare e richiede solo un filtro sul lato server.

Si prega di passare attraverso questo article.Well spiegato e simili. Unico vincolo è IE non supporta questa e le versioni precedenti di FF, Chrome ha anche alcuni problemi.

http: //techblog.constantcontact .com / software-sviluppo / con-cors-per-cross-domain-ajax-richieste /

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top