jQuery WebService json的问题

supremeholy 2010-05-21 10:14:38
现在使用jQuery $.getJSON 来调用WebService,WebService返回json字符串。但在返回后不知怎么处理了。
前台html部分:

<script type="text/javascript">
//省
function ProvinceBind() {
//清空
$("#Province").empty();
$("#Province").append("<option selected value=\"\">请选择...</option>");
var oSheng = $("#Province");
$.getJSON(
"AreaService.asmx/GetProvince",
function(json) {
$.each(json, function(i) {
$("#Province").append("<option value=\"" + json[i].Code + "\">" + json[i].Name + "</option>");
});
}
);
}

$(document).ready(function() {
ProvinceBind();
});
</script>



<select id="Province" name="Province">
<option value="">请选择...</option>
</select>


WebService部分:

[WebMethod]
public string GetProvince()
{
StringBuilder sb = new StringBuilder();
DataSet ds = new ChinaBond.BLL.T_Province().GetProvinceList("");
if (ds == null || ds.Tables[0].Rows.Count == 0)
return "";

sb.Append("[");
int i = 0;
foreach (DataRow item in ds.Tables[0].Rows)
{
string temp = "{";
temp += string.Format("Code:\"{0}\",Name:\"{1}\"", item["Code"].ToString().Trim(), item["Name"].ToString().Trim());
temp += "}";
if ((++i) < ds.Tables[0].Rows.Count)
temp += ",";
sb.Append(temp);
}
if (ds.Tables[0].Rows.Count > 0)
sb.Append("]");

return sb.ToString();
}


用FireBug看到的返回信息:

<?xml version="1.0" encoding="utf-8"?>
<string xmlns="http://tempuri.org/">[{Code:"110000",Name:"北京市"},{Code:"120000",Name:"天津市"},{Code:"130000",Name:"河北省"},{Code:"140000",Name:"山西省"},{Code:"150000",Name:"内蒙古"},{Code:"210000",Name:"辽宁省"},{Code:"220000",Name:"吉林省"},{Code:"230000",Name:"黑龙江"},{Code:"310000",Name:"上海市"},{Code:"320000",Name:"江苏省"},{Code:"330000",Name:"浙江省"},{Code:"340000",Name:"安徽省"},{Code:"350000",Name:"福建省"},{Code:"360000",Name:"江西省"},{Code:"370000",Name:"山东省"},{Code:"410000",Name:"河南省"},{Code:"420000",Name:"湖北省"},{Code:"430000",Name:"湖南省"},{Code:"440000",Name:"广东省"},{Code:"450000",Name:"广西省"},{Code:"460000",Name:"海南省"},{Code:"500000",Name:"重庆市"},{Code:"510000",Name:"四川省"},{Code:"520000",Name:"贵州省"},{Code:"530000",Name:"云南省"},{Code:"540000",Name:"西 藏"},{Code:"610000",Name:"陕西省"},{Code:"620000",Name:"甘肃省"},{Code:"630000",Name:"青海省"},{Code:"640000",Name:"宁 夏"},{Code:"650000",Name:"新 疆"},{Code:"710000",Name:"台湾省"},{Code:"810000",Name:"香 港"},{Code:"820000",Name:"澳 门"}]</string>


怎么在前台写js才可以处理返回的字符串呢?
...全文
322 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
simple_soul 2010-12-06
  • 打赏
  • 举报
回复
我解析都无法解析了
悔说话的哑巴 2010-05-22
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 ad0128 的回复:]
都没说到点子上。
WebService里面自定义的json。
不能用return
要用response

return sb.ToString();
改成:
this.Response.Write(sb.ToString());
[/Quote]
UP
supremeholy 2010-05-22
  • 打赏
  • 举报
回复
使用 ashx来处理请求时用的是context.Response.Write(".........");用firebug看返回的信息是

[{Code:"110000",Name:"北京市"},{Code:"120000",Name:"天津市"},{Code:"130000",Name:"河北省"},{Code:"140000",Name:"山西省"},{Code:"150000",Name:"内蒙古"},{Code:"210000",Name:"辽宁省"},{Code:"220000",Name:"吉林省"},{Code:"230000",Name:"黑龙江"},{Code:"310000",Name:"上海市"},{Code:"320000",Name:"江苏省"},{Code:"330000",Name:"浙江省"},{Code:"340000",Name:"安徽省"},{Code:"350000",Name:"福建省"},{Code:"360000",Name:"江西省"},{Code:"370000",Name:"山东省"},{Code:"410000",Name:"河南省"},{Code:"420000",Name:"湖北省"},{Code:"430000",Name:"湖南省"},{Code:"440000",Name:"广东省"},{Code:"450000",Name:"广西省"},{Code:"460000",Name:"海南省"},{Code:"500000",Name:"重庆市"},{Code:"510000",Name:"四川省"},{Code:"520000",Name:"贵州省"},{Code:"530000",Name:"云南省"},{Code:"540000",Name:"西 藏"},{Code:"610000",Name:"陕西省"},{Code:"620000",Name:"甘肃省"},{Code:"630000",Name:"青海省"},{Code:"640000",Name:"宁 夏"},{Code:"650000",Name:"新 疆"},{Code:"710000",Name:"台湾省"},{Code:"810000",Name:"香 港"},{Code:"820000",Name:"澳 门"}]

这个在前台用jQuery来解析时使用

function ProvinceBind() {
//清空
$("#Province").empty();
$("#Province").append("<option selected value=\"\">请选择...</option>");
var oSheng = $("#Province");
$.getJSON(
"ProvinceHandler.ashx",
function(json) {
$.each(json, function(i) {
$("#Province").append("<option value=\"" + json[i].Code + "\">" + json[i].Name + "</option>");
});
}
);
}

这样是正确的,在select控件中可以把数据绑定上。
现在问题是我想用WebService来实现数据的返回。
wuyq11 2010-05-21
  • 打赏
  • 举报
回复
type: 'post',
dataType: 'json',

var a= new Object();
$.post("Test.ashx", "uname=" + JSON.stringify(a), function(result) {
alert($(result).find("Message").text());
});

post方式就用
string name = context.Request.Form["uname"];
http://topic.csdn.net/u/20091029/18/1d64c2e7-8dda-42da-aeab-576c2a817797.html
ad0128 2010-05-21
  • 打赏
  • 举报
回复
都没说到点子上。
WebService里面自定义的json。
不能用return
要用response

return sb.ToString();
改成:
this.Response.Write(sb.ToString());
cuike519 2010-05-21
  • 打赏
  • 举报
回复
看楼主应该是返回的一个XML。

参考下面链接解析XML:http://www.w3schools.com/xml/xml_examples.asp
cuike519 2010-05-21
  • 打赏
  • 举报
回复
我记得应该是d.JsonObj

看你的WebService返回的是什么?如果是可被序列化的对象那么可以序列化为JSON对象直接发送到客户端,如果是返回的XML则需要你在收到这个XML的时候自己解析XML。

如果是已经序列化为JSON对象你可以尝试使用下面的方法:
var obj = evel(result).d;
获得这个对象。

62,266

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧