Uno de los principales problemas que tienen los desarrolladores web a la hora de desarrollar aplicaciones RIA con ajax, es la limitación de javascript para cumplir la política de mismo origen.
Teóricamente, debido a esta política, JavaScript no puede lazar peticiones o consumir datos entre dominios distintos. Digo teóricamente, porque esto puede conseguirse con algunas técnicas de hacking como csshttprequest.
Para no tenir que recurrir a estas técnicas existe una forma más elegante de conseguir esto y es mediante jsonp.
Básicamente se basa en una técnica en la que entran en juego tanto el frontend como el backend, en la petición/respuesta json.
El cliente envía una petición de tipo jsonp con un parámetro en la url que tendría como valor el nombre de la función que manejará la respuesta de dicha petición. En el servidor se retorna una respuesta json como valor de una variable con el Mismo nombre de dicha función.
Jquery puede trabajar con jsonp, el proceso sería el siguiente:
Javascript en el frontend con jquery
$(document).ready(function () {
$.ajax({
dataType: "jsonp",
data: "",
url: "http://example.com/json?method=?",
success: function(json){ alert(json.key); }
});
/*
Si el método que se le pasa en la url
tiene un valor "?" jquery generará
un valor aleatorio para la función que
manejará la respuesta. Esto nos evita
problemas con la cache
*/
})
Código de respuesta en backend en php
header('Content-type: text/json');
$respuesta = array('key'=>'valor');
echo $_GET['method']."(".json_encode($respuesta).")");
exit();
Esto nos permitirá trabajar con ajax entre dominios y gestionar la respuesta json a nuestro antojo.