origin falta domain datatype cross control cabecera allow javascript jquery ajax json

javascript - falta - Hacer una solicitud JSONP ajax entre dominios con jQuery



jsonp jquery (7)

Concepto explicado

¿Estás intentando hacer una llamada AJAX entre dominios? Es decir, su servicio no está alojado en su misma ruta de aplicación web. Su servicio web debe admitir la inyección de método para realizar JSONP.

Su código parece correcto y debería funcionar si sus servicios web y su aplicación web están alojados en el mismo dominio.

Cuando haces un $.ajax con dataType: ''jsonp'' significa que jQuery en realidad está agregando un nuevo parámetro a la URL de consulta.

Por ejemplo, si su URL es http://10.211.2.219:8080/SampleWebService/sample.do entonces jQuery agregará ?callback={some_random_dynamically_generated_method} .

Este método es más bien un proxy adjunto realmente en el objeto window . Esto no es nada específico, pero se ve más o menos así:

window.some_random_dynamically_generated_method = function(actualJsonpData) { //here actually has reference to the success function mentioned with $.ajax //so it just calls the success method like this: successCallback(actualJsonData); }

Resumen

Tu código de cliente parece estar bien. Sin embargo, debe modificar su código de servidor para envolver sus datos JSON con un nombre de función que pasó con la cadena de consulta. es decir

Si ha solicitado cadena de consulta

?callback=my_callback_method

entonces, su servidor debe responder a los datos envueltos así:

my_callback_method({your json serialized data});

Me gustaría analizar datos de matriz JSON con jquery ajax con el siguiente código:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>Sample</title> <script type="text/javascript" src="Scripts/jquery-1.7.2.min.js"></script> <script type="text/javascript"> var result; function jsonparser1() { $.ajax({ type: "GET", url: "http://10.211.2.219:8080/SampleWebService/sample.do", dataType: "jsonp", success: function (xml) { alert(xml.data[0].city); result = xml.code; document.myform.result1.value = result; }, }); } </script> </head> <body> <p id="details"></p> <form name="myform"> <input type="button" name="clickme" value="Click here to show the first name" onclick=jsonparser1() /> <input type="text" name="result1" readonly="true"/> </form> </body> </html>

Mis datos JSON son:

{"Data": [{"Address":"chetpet","FirstName":"arulmani","Id":1,"LastName":"sathish","City":"chennai"},{"Address":"ramapuram","FirstName":"raj","Id":2,"LastName":"nagu","City":"chennai"},{"Address":"ramapuram","FirstName":"raj","Id":2,"LastName":"nagu","City":"chennai"},{"Address":"ramapuram","FirstName":"ramaraj","Id":3,"LastName":"rajesh","City":"chennai"},{"Address":"ramapuram","FirstName":"yendran","Id":3,"LastName":"sathi","City":"chennai"}],"Code":true}

Pero no obtengo ningún resultado ... alguien por favor ayuda ...


Debe usar el complemento ajax-cross-origin: http://www.ajax-cross-origin.com/

Simplemente agregue la opción crossOrigin: true

$.ajax({ crossOrigin: true, url: url, success: function(data) { console.log(data); } });


Sus datos JSON contienen los datos de la propiedad, pero está accediendo a los data . Es sensible a mayúsculas

function jsonparser1() { $.ajax({ type: "GET", url: "http://10.211.2.219:8080/SampleWebService/sample.do", dataType: "json", success: function (xml) { alert(xml.Data[0].City); result = xml.Code; document.myform.result1.value = result; }, }); }

EDITAR También Ciudad y Código está en el caso incorrecto. (Gracias @ Christopher Kenney)

EDIT2 También debería ser json, y no jsonp (al menos en este caso)

ACTUALIZAR De acuerdo con su último comentario, debe leer esta respuesta: https://.com/a/11736771/325836 por Abdul Munim


Tratar

alert(xml.Data[0].City)

Caso sensible!


alerta (xml.data [0] .city);

use xml.data ["Data"] [0] .city en su lugar


necesita analizar su xml con jquery json parse ... es decir

var parsed_json = $.parseJSON(xml);