llamada AJAX entre dominios
Conozco la política entre dominios de AJAX. Así que no puedo simplemente llamar a " http://www.google.com " a través de una solicitud HTTP ajax y mostrar los resultados en algún lugar de mi sitio.
Lo probé con el tipo de datos "jsonp", que realmente funcionaría, pero aparece un error de sintaxis (obviamente porque los datos recibidos no están en formato JSON).
¿Existe alguna otra posibilidad de recibir/mostrar datos de un dominio extranjero? ¿Los iFrames siguen la misma política?
La única forma (fácil) de obtener datos entre dominios usando AJAX es usar un lenguaje del lado del servidor como proxy, como señaló Andy E. Aquí hay un pequeño ejemplo de cómo implementarlo usando jQuery:
La parte de jQuery:
$.ajax({
url: 'proxy.php',
type: 'POST',
data: {
address: 'http://www.google.com'
},
success: function(response) {
// response now contains full HTML of google.com
}
});
Y el PHP (proxy.php):
echo file_get_contents($_POST['address']);
Simple como eso. Solo tenga en cuenta lo que puede o no hacer con los datos extraídos.
Deberá insertar dinámicamente una etiqueta de secuencia de comandos en la página que hace referencia a los datos. Usando JSONP, puede ejecutar alguna función de devolución de llamada cuando el script se haya cargado.
La página de Wikipedia sobre JSONP tiene un ejemplo conciso; la etiqueta del script:
<script type="text/javascript" src="http://domain1.com/getjson?jsonp=parseResponse">
</script>
devolvería los datos JSON envueltos en una llamada a parseResponse
:
parseResponse({"Name": "Cheeso", "Rank": 7})
(dependiendo de la configuración del getjson
script en domain1.com)
El código para insertar la etiqueta dinámicamente sería algo como:
var s = document.createElement("script");
s.src = "http://domain1.com/getjson?jsonp=parseResponse";
s.type = "text/javascript";
document.appendChild(s);