Faça uma solicitação JSONP de ajax entre domínios com jQuery

Eu gostaria de analisar dados da matriz JSON com jquery ajax com o seguinte código:

   Sample   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; }, }); }    

Meus dados JSON são:

 {"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} 

Mas eu não estou recebendo nenhuma saída … alguém por favor ajude …

   

Conceito explicado

Você está tentando fazer uma chamada AJAX entre domínios? Significado, seu serviço não está hospedado no mesmo caminho de aplicativo da web? Seu serviço da web deve suportar injeção de método para fazer JSONP.

Seu código parece bem e deve funcionar se seus serviços da Web e seu aplicativo da Web estiverem hospedados no mesmo domínio.

Quando você faz um $.ajax com dataType: 'jsonp' significa que o jQuery está realmente adicionando um novo parâmetro à URL da consulta.

Por exemplo, se seu URL for http://10.211.2.219:8080/SampleWebService/sample.do , o jQuery adicionará ?callback={some_random_dynamically_generated_method} .

Esse método é mais um tipo de proxy realmente anexado ao object window . Isso não é específico, mas se parece com algo assim:

 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); } 

Resumo

Seu código de cliente parece bem. No entanto, você precisa modificar o código do servidor para agrupar seus dados JSON com um nome de function que passou com a string de consulta. ou seja

Se você tiver reqested com string de consulta

 ?callback=my_callback_method 

então, seu servidor deve dados de resposta envolvidos assim:

 my_callback_method({your json serialized data}); 

Você precisa usar o plugin ajax-cross-origin: http://www.ajax-cross-origin.com/

Basta adicionar a opção crossOrigin: true

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

Seus dados JSON contêm a propriedade Data , mas você está acessando data . É sensível a maiú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; }, }); } 

EDIT também Cidade e Código está no caso errado. (Obrigado @Christopher Kenney)

EDIT2 Também deve ser json e não jsonp (pelo menos neste caso)

ATUALIZAÇÃO De acordo com o seu último comentário, você deve ler esta resposta: https://stackoverflow.com/a/11736771/325836 por Abdul Munim

Experimentar

 alert(xml.Data[0].City) 

Case sensitivamente!

você precisa analisar seu xml com jquery json parse … ou seja

  var parsed_json = $.parseJSON(xml); 

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

use xml.data [“Data”] [0] .city

use o proxy público aberto YQL, hospedado pelo Yahoo. Lida com XML e HTML

https://gist.github.com/rickdog/d66a03d1e1e5959aa9b68869807791d5