2011-03-16 11 views
7

Solicitar datos desde cualquier ubicación en mi dominio con .load() (o cualquier función jQuery ajax) funciona bien.¿Cómo se obtiene contenido de otro dominio con .load()?

No obstante, no funciona el acceso a una URL en un dominio diferente. ¿Cómo lo haces? El otro dominio también es mío.

Leí sobre un truco que puedes hacer con PHP y hacer un proxy que obtiene el contenido, luego usas las funciones ajax de jQuery, en esa ubicación php en tu servidor, pero eso todavía usa jQuery ajax en tu propio servidor para que no cuenta.

¿Hay un buen complemento?

EDIT: me encontré con un muy buen complemento para jQuery que le permite solicitar el contenido de otras páginas usando cualquiera de la función jQuery exactamente de la misma manera que lo haría una petición ajax normal en su propio dominio.

El mensaje: http://james.padolsey.com/javascript/cross-domain-requests-with-jquery/

El plugin: https://github.com/jamespadolsey/jQuery-Plugins/tree/master/cross-domain-ajax/

Respuesta

10

Esto es debido a la política de varios dominios, que, a su especie, significa que el uso de un script del lado del cliente (javascript ...) no puede solicitar datos de otro dominio. Por suerte para nosotros, esta restricción no existe en la mayoría de los scripts del lado del servidor.

Entonces ...

Javascript:

$("#google-html").load("google-html.php"); 

PHP en "google-html.php":

echo file_get_contents("http://www.google.com/"); 

funcionaría.

+0

Siempre que no haya restricciones en esto, y muchos servicios de alojamiento compartido lo deshabilitan. Si este es el caso para usted, es posible que desee examinar el uso de Curl http://curl.haxx.se/ –

+0

Es cierto, supuse que estaba utilizando uno de los mejores servicios de alojamiento pagados. – mattsven

+0

El mejor servicio de alojamiento pagado deshabilita 'allow_url_fopen'. Es mejor para la seguridad. –

3

Diferentes dominios = servidores diferentes en lo que respecta a su navegador. Utilice JSONP para hacer la solicitud o use PHP para proxy. Puede usar jQuery.ajax() para realizar una solicitud JSONP entre dominios.

3

Una solución realmente fácil es utilizar el servicio YQL de Yahoo, que puede recuperar contenido de cualquier sitio externo.

He hecho esto con éxito en algunos sitios siguiendo este ejemplo que usa solo JavaScript y YQL. http://icant.co.uk/articles/crossdomain-ajax-with-jquery/using-yql.html

Este ejemplo es parte de una publicación de blog que describe algunas otras soluciones también. http://www.wait-till-i.com/2010/01/10/loading-external-content-with-ajax-using-jquery-and-yql/

+0

Gracias, el plugin al que hice referencia en mi EDIT arriba en realidad usa eso: D – trusktr

1

Conozco otra solución que funciona. No es necesario que modifique JQuery. Requiere que pueda ponerse de pie una página ASP en su dominio. He usado este método yo mismo.

1) Crear una página proxy.asp como el de esta página http://www.itbsllc.com/zip/proxyscripts.html

2) A continuación, puede hacer una función de carga jQuery y lo alimentan proxy.asp? Url = ....... hay un ejemplo en ese enlace de cómo exactamente formatearlo. De todos modos, alimenta la URL de la página externa y el tipo de mime deseado como variables de obtención a su página proxy.asp local. Los dos tipos de mime que he usado son text/html e image/jpg.

Tenga en cuenta que si su página de destino tiene imágenes con enlaces de fuente relativa, probablemente no se cargarán. Espero que esto ayude.

+0

¡Gracias por la respuesta! – trusktr

Cuestiones relacionadas