Ich möchte JSON-Array-Daten mit jquery ajax mit dem folgenden Code analysieren:
<!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>
Meine JSON-Daten sind:
{"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}
Aber ich bekomme keinen Output ... bitte helfen Sie mit ...
Versuchen Sie, einen domänenübergreifenden AJAX -Aufruf auszuführen? Das heißt, Ihr Dienst wird nicht in demselben Webanwendungspfad gehostet. Ihr Web-Service muss die Methodeninjektion unterstützen, um JSONP ausführen zu können.
Ihr Code scheint gut zu sein und sollte funktionieren, wenn Ihre Webdienste und Ihre Webanwendung in derselben Domäne gehostet werden.
Wenn Sie einen $.ajax
mit dataType: 'jsonp'
ausführen, bedeutet dies, dass jQuery der Abfrage-URL tatsächlich einen neuen Parameter hinzufügt.
Wenn Ihre URL beispielsweise http://10.211.2.219:8080/SampleWebService/sample.do
ist, fügt jQuery ?callback={some_random_dynamically_generated_method}
hinzu.
Diese Methode ist eher eine Art Proxy, der tatsächlich in einem window
-Objekt angehängt ist. Das ist nichts konkretes, sieht aber so aus:
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);
}
Zusammenfassung
Ihr Client-Code scheint gut zu sein. Sie müssen jedoch den Servercode ändern, um Ihre JSON-Daten mit einem Funktionsnamen zu umschließen, der mit der Abfragezeichenfolge übergeben wurde. d.h.
Wenn Sie mit der Abfragezeichenfolge angefragt haben
?callback=my_callback_method
dann muss Ihr Server die Antwortdaten wie folgt beantworten:
my_callback_method({your json serialized data});
Sie müssen das ajax-cross-Origin-Plugin verwenden: http://www.ajax-cross-Origin.com/
Fügen Sie einfach die Option crossOrigin: true hinzu
$.ajax({
crossOrigin: true,
url: url,
success: function(data) {
console.log(data);
}
});
Ihre JSON-Daten enthalten die Eigenschaft Data
, Sie greifen jedoch auf data
zu. Es ist case sensitive
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 Auch Stadt und Code liegen im falschen Fall. (Danke @Christopher Kenney)
EDIT2 Es sollte auch json und nicht jsonp sein (zumindest in diesem Fall)
UPDATE Laut Ihrem letzten Kommentar sollten Sie diese Antwort lesen: https://stackoverflow.com/a/11736771/325836 von Abdul Munim
Versuchen
alert(xml.Data[0].City)
Groß- und Kleinschreibung!
sie müssen Ihre XML mit JQuery Json Parse analysieren ... d. h
var parsed_json = $.parseJSON(xml);
alert (xml.data [0] .city);
verwenden Sie stattdessen xml.data ["Data"] [0] .city
verwenden Sie Open Public Proxy YQL, gehostet von Yahoo. Verarbeitet XML und HTML
https://Gist.github.com/rickdog/d66a03d1e1e5959aa9b68869807791d5