2011-03-28 14 views
13

Miré por todas partes aquí para esto. Necesito un simple dominio cruzado de jsonp pull-how "cómo hacerlo". Estoy usando jQuery 1.5.1.Instrucciones básicas para el dominio cruzado jsonp

He intentado lo siguiente en un programa en otro sitio:

$.getJSON("http://www.mydomain.com/testjson.json?jsoncallback=?", function(data) { 
    alert("I'm hitting this."); 
} 

Esto no funciona en absoluto.

¿Hay alguna forma de hacer una simple llamada jQuery JSONP de dominio cruzado?

Gracias

+7

Falta '); 'al final. Verifique la consola por errores. –

Respuesta

13

JSONP requiere la cooperación del servidor para tener éxito. No puede extraer páginas aleatorias utilizando JSONP y esperar que tengan éxito; el servidor necesita saber:

  1. Necesita formular una respuesta JSONP, en lugar de una respuesta JSON.
  2. Necesita conocer el nombre de la función para ajustar la respuesta.

Si no está seguro de por qué el servidor necesita saber esto, o cuáles son las diferencias entre JSON y JSONP, debe leer sobre ellos; o todo no tendrá sentido. Para empezar, echa un vistazo a Can anyone explain what JSONP is, in layman terms? y http://en.wikipedia.org/wiki/JSONP.

Después de entender esto un poco más, es probable que se encuentra el servidor está volviendo

{ "key": 1, "bar": "foo" } 

(que es válida JSON), en lugar de:

someCallback({ "key": 1, "bar": "foo" }) 

que es una respuesta JSONP.

1

Si prueba estos http://terrasus.com/detail.jsp?articleID=396 paso a paso, funcionará bien. si produce una respuesta jsonp, debe obtener el valor de devolución de llamada y configurarlo en su respuesta de forma dinámica. Este artículo tiene una explicación de detalle

Cuestiones relacionadas