Pregunta

Tengo un plugin existente jQuery que hace un montón de llamadas AJAX JSON (en su mayoría). Me pregunto lo que es el más rápido para permitir que se haga a través del sitio de la llama es decir, $ .get y $ .post URL no será del mismo dominio.

He oído hablar de JSONP, pero me preguntaba si alguien me podría dar un ejemplo concreto para ir sobre todo el proceso. Quiero hacer cambios mínimos, si es posible a mi guión. ¿Debo usar un tipo de proxy.php?

Gracias por su tiempo.

¿Fue útil?

Solución

JSONP le permitirá hacer llamadas entre sitios. Ver documentos jQuery en esa materia.

El concepto es simple: en lugar de hacer una llamada normal Ajax, jQuery añadirá una etiqueta <script> a su <head>. Para que esto funcione, los datos JSON debe ser envuelto en una función de llamada.

Su servidor necesita enviar la información de tal manera (PHP ejemplo):

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

A continuación, puede utilizar jQuery para obtener esa información:

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

Más información está disponible aquí: ¿Cuál es JSONP ?

Otros consejos

Si usted tiene control sobre el dominio remoto o el dominio remoto tiene un crossdomain. xml que puede caer en una biblioteca como flXHR en conjunción con su jQuery Plugin

También se puede utilizar en lugar de CORS JSONP, trabaja con FF, Chrome, Safari. CORS es menos problemático de configurar y requiere sólo un filtro en el lado del servidor.

Por favor, vaya a través de este article.Well explicado y similares. Única restricción es IE no soporta esto y versiones anteriores de FF, Chrome también tiene algunos problemas.

http: //techblog.constantcontact .com / de desarrollo de software / uso-cors-para-cross-domain-ajax-peticiones /

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top