我想用jquery ajax用以下代码解析JSON数组数据:
<!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>
我的JSON数据是:
{"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}
但我没有得到任何输出......任何人请帮帮忙......
答案 0 :(得分:87)
您是否正在尝试进行跨域AJAX调用?这意味着,您的服务不在您的同一Web应用程序路径中托管?您的Web服务必须支持方法注入才能执行JSONP。
您的代码似乎很好,如果您的Web服务和您的Web应用程序托管在同一个域中,它应该可以正常工作。
使用$.ajax
执行dataType: 'jsonp'
时,意味着jQuery实际上是在查询网址中添加新参数。
例如,如果您的网址为http://10.211.2.219:8080/SampleWebService/sample.do
,则jQuery会添加?callback={some_random_dynamically_generated_method}
。
此方法更实际地附加在window
对象中的代理。这没什么特别的,但看起来像这样:
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);
}
<强>摘要强>
您的客户端代码似乎没问题。但是,您必须修改服务器代码以使用通过查询字符串传递的函数名来包装JSON数据。即。
如果您已经重新使用查询字符串
?callback=my_callback_method
然后,您的服务器必须响应包含这样的数据:
my_callback_method({your json serialized data});
答案 1 :(得分:8)
您需要使用ajax-cross-origin插件: http://www.ajax-cross-origin.com/
只需添加选项crossOrigin:true
$.ajax({
crossOrigin: true,
url: url,
success: function(data) {
console.log(data);
}
});
答案 2 :(得分:1)
您的JSON数据包含属性Data
,但您正在访问data
。这是区分大小写的
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;
},
});
}
编辑此外,城市和代码也是错误的。 (谢谢@Christopher Kenney)
EDIT2 它也应该是json,而不是jsonp(至少在这种情况下)
更新根据您的最新评论,您应该阅读以下答案:Abdul Munim的https://stackoverflow.com/a/11736771/325836
答案 3 :(得分:1)
尝试
alert(xml.Data[0].City)
案例敏感!
答案 4 :(得分:0)
你需要用jquery json解析解析你的xml ...即
var parsed_json = $.parseJSON(xml);
答案 5 :(得分:0)
警报(xml.data [0]。市);
使用xml.data [“Data”] [0] .city而不是
答案 6 :(得分:0)
使用由Yahoo托管的开放公共代理YQL。处理XML和HTML
https://gist.github.com/rickdog/d66a03d1e1e5959aa9b68869807791d5