2010-09-23 10 views
8

Estoy tratando de adquirir un JSON que se envía desde un sitio seguro https,JSONP para adquirir JSON De protocolo HTTPS con jQuery

El cliente tenía la esperanza de no utilizar cualquier lenguaje del lado del servidor (el todo lo en Javascript)

He leído que debo usar JSONP para cargar un JSON desde un sitio seguro, cuando uso la función .ajax de Jquery.

Mi primera pregunta sería ¿qué formato necesito para configurar este JSONP? Ahora mismo mi código es el siguiente:

html =new Object(); 
    html = $.ajax({ 
     url: "https://my-secure.net", 
     async: false, 
     dataType: 'jsonp' 
    }).responseText; 

//alert(html);  
    alert("myObject is " + html.toSource()); 
    console.log(html); 

Sin embargo, nada está siendo alertado, ni nada que se registra en Firebug. Básicamente, quiero poder manipular los datos JSON. Veo los datos en la respuesta en Firebug, pero hay un error que dice "etiqueta no válida". He leído que para arreglar esto lo encierras en la función eval con parantheses adicionales pero esto no está funcionando.

http://b.lesseverything.com/2007/10/25/invalid-label-error-when-eval-json

también consigo un error que dice que mi petición $ .ajax es "indefinido", pero puedo ver los datos en la respuesta. Sospecho que esto tiene algo que ver con la forma en que estoy tomando los datos iniciales. Cualquier consejo sería apreciado. ¡Gracias!

Respuesta

5

puede utilizar getJSON por ejemplo

$.getJSON('ajax/test.json', function(data) { 
    $('.result').html('<p>' + data.foo + '</p>' 
    + '<p>' + data.baz[1] + '</p>'); 
}); 

verificación de la documentación completa getJSON http://api.jquery.com/jQuery.getJSON/

EDITAR

que estaba equivocado ... usando Jquery.ajax causará problema a través del navegador, pero no con Jquery.getJSON

http://docs.jquery.com/Release:jQuery_1.2/Ajax#Cross-Domain_getJSON_.28using_JSONP.29

Aquí es un ejemplo de varios dominios llegar JSON

EDITAR

Firefox tiene un problema con HTTPS, ya que sé que será fijado si envía su solicitud como esta

$.getJSON('ajax/test.json',{}, function(data) { 
    $('.result').html('<p>' + data.foo + '</p>' 
    + '<p>' + data.baz[1] + '</p>'); 
}); 

Fuente: AJAX https POST requests using jquery fail in Firefox

espero que esto ayude

+0

¿Funciona esto a través del protocolo HTTPS? –

+0

sí, pero la secuencia de comandos y la URL solicitada deben estar en el mismo dominio – trrrrrrm

+0

¿Y si no lo está, no hay forma de hacerlo? Mi consola y mi api están en dos dominios separados, –

Cuestiones relacionadas