jquery ajax调用后台方法返回json数据转自http://www.cnblogs.com/xiaoxi/archive/2011/03/31/2000803.html
2011-11-02 13:58
1006 查看
利用JQuery的$.ajax()可以很方便的调用 asp.net的后台方法。但往往从后台返回的json字符串不能够正确解析,究其原因,是因为没有对返回的json数据做进一步的加工。其实,这里只需 要做一次对象化处理,方式不是太麻烦,就是将该字符串放于eval()中执行一次即可,这种方式也适合以普通javascipt方式获取json对象,以 下举例说明:
$.ajax({
type: "POST",
url: "json_post.aspx/getdata",
dataType: "json",
contentType: "application/json; charset=utf-8",
success: function (data) {
var dataobj = eval("(" + data.d + ")"); //转换为json对象
alert(dataobj.root.length); //输出root的子对象数量
$.each(dataobj.root, function (i, item) {
alert("name:" + item.name + ",value:" + item.value);
})
}
});
后台方法:
[WebMethod]
public static string getdata()
{
StringBuilder str=new StringBuilder();
str.Append("{root: [{name:'6101',value:'北京市'}, {name:'6102',value:'天津市'}, {name:'6103',value:'上海市'}, ");
str.Append("{name:'6104',value:'重庆市'}, {name:'6105',value:'渭南市'}, {name:'6106',value:'延安市'}, {name:'6107',value:'汉中市'}, ");
str.Append("{name:'6108',value:'榆林市'}, {name:'6109',value:'安康市'}, {name:'6110',value:'商洛市'}]}");
return str.ToString();
}
注意:1.需导入命名空间 using System.Web.Services;
2.方法一定要静态方法,而且要有[WebMethod]的声明。
小结:
从服务器来的是json数组,如[{id:1,name:"小子"},{id:2,name:"大子"}] 在客户端需要用eval("("+json数组对象+")")处理一次,这样就可以把从服务器来的json数据转成javascript的json。
vs2005
如:单个json对象 var data=eval(data.d);
如:数组json对象 var data=eval("("+data.d+")") ;
注:vs2008一定要加.d才能正常将jquery的json转成javascript的json对象
如:单个json对象 var data=eval(data.d);
如:数组json对象 var data=eval("("+data.d+")") ;
$.ajax({
type: "POST",
url: "json_post.aspx/getdata",
dataType: "json",
contentType: "application/json; charset=utf-8",
success: function (data) {
var dataobj = eval("(" + data.d + ")"); //转换为json对象
alert(dataobj.root.length); //输出root的子对象数量
$.each(dataobj.root, function (i, item) {
alert("name:" + item.name + ",value:" + item.value);
})
}
});
后台方法:
[WebMethod]
public static string getdata()
{
StringBuilder str=new StringBuilder();
str.Append("{root: [{name:'6101',value:'北京市'}, {name:'6102',value:'天津市'}, {name:'6103',value:'上海市'}, ");
str.Append("{name:'6104',value:'重庆市'}, {name:'6105',value:'渭南市'}, {name:'6106',value:'延安市'}, {name:'6107',value:'汉中市'}, ");
str.Append("{name:'6108',value:'榆林市'}, {name:'6109',value:'安康市'}, {name:'6110',value:'商洛市'}]}");
return str.ToString();
}
注意:1.需导入命名空间 using System.Web.Services;
2.方法一定要静态方法,而且要有[WebMethod]的声明。
小结:
从服务器来的是json数组,如[{id:1,name:"小子"},{id:2,name:"大子"}] 在客户端需要用eval("("+json数组对象+")")处理一次,这样就可以把从服务器来的json数据转成javascript的json。
vs2005
如:单个json对象 var data=eval(data.d);
如:数组json对象 var data=eval("("+data.d+")") ;
注:vs2008一定要加.d才能正常将jquery的json转成javascript的json对象
如:单个json对象 var data=eval(data.d);
如:数组json对象 var data=eval("("+data.d+")") ;
相关文章推荐
- js 调用C#.NET后台方法 转载自:http://www.cnblogs.com/lizhao/archive/2010/11/23/1990436.html
- AJAX从服务端获取数据的三种方法【转:http://www.cnblogs.com/nokiaguy/archive/2008/05/25/1207157.html】
- mysql的数据类型- 特别是表示日期/时间的数据类型: 参考: http://www.cnblogs.com/bukudekong/archive/2011/06/27/2091590.html
- 性能分析:处理器、磁盘I/O、进程、网络分析方法 http://www.cnblogs.com/fnng/archive/2012/10/30/2747246.html
- 寻找最快的大文件拷贝方法(转自:http://www.cnblogs.com/hesicong/archive/2007/08/18/860763.html)
- 实战 SQL Server 2008 数据库误删除数据的恢复 (转载至dudu http://www.cnblogs.com/dudu/archive/2011/10/15/sql_server_recover_deleted_records.html)
- IHttpModule.Init方法被执行多次的原因(转自:http://www.cnblogs.com/mingda/archive/2009/02/11/1388709.html)
- Codeigniter+PHPExcel中导出数据到Excel文件//http://www.cnblogs.com/jiji262/archive/2012/03/27/2419989.html
- json(http://www.cnblogs.com/lanxuezaipiao/archive/2013/05/24/3096437.html)
- C# 启动外部程序的几种方法(转自:http://www.cnblogs.com/Slxj/archive/2012/01/12/2320531.html)
- apache启用gzip压缩方法--转载自http://www.cnblogs.com/linzhenjie/archive/2013/03/05/2943635.html
- 杭电2048(此种方法比较麻烦的,建议推荐本人的 【杭电2048(递推)】http://www.cnblogs.com/xiohao/archive/2012/09/28/2706573.html)
- eclipse中安装ADT插件的最简单的方法转载自http://www.cnblogs.com/go-onxp/archive/2012/05/22/android.html
- jQuery Ajax 实例 全解析http://www.cnblogs.com/yeer/archive/2009/07/23/1529460.html
- 关于Jquery中ajax方法data参数用法的总结http://www.cnblogs.com/tim190/archive/2010/10/20/1856523.html
- 使用Sqlserver事务发布实现数据同步(引:http://www.cnblogs.com/daizhj/archive/2009/11/18/1605293.html )
- C++中cout输出字符型指针地址值的方法 http://www.cnblogs.com/wxxweb/archive/2011/05/20/2052256.html
- 在asp.net中读取XML文件信息的4种方法 (http://www.cnblogs.com/liping19851014/archive/2007/10/16/926137.html)
- 如果你的数据库文件只剩下数据文件没有日志文件时,如何附加 (摘自:http://www.cnblogs.com/yukaizhao/archive/2008/07/23/sp_attach_single_file_db.html)
- 在Silverlight中对多个异步任务的调用 http://www.cnblogs.com/chenxizhang/archive/2011/08/30/2159124.html