首页 新闻 会员 周边

asp.net webservice 如何获得jquery ajax post 提交的参数

0
悬赏园豆:5 [已解决问题] 解决于 2013-05-27 15:48
post提交的数据为json格式,在webservice的方法里如何获取。
提交的数据格式如图  

我知道在webservice的方法里设置参数,ajax提交时用同样名字的参数可以直接就能获得参数的值。但是这个方法是要传一个对象,这个对象有100多个属性。在方法里写100多个参数显然不合适。所以用了提交json数据,但是在webservice里如何获取请求的json数据值呢
Context.Request.Form["id"].ToString(); 报错“未将对象引用到对象的实例”
其小本的主页 其小本 | 初学一级 | 园豆:37
提问于:2013-05-24 16:13
< >
分享
最佳答案
0

如果不打算设计模型,那么你的WebService端至少需要类似于Json.NET这样的Json框架来构建JsonObject,通过JsonObject调用属性。

收获园豆:5
飞扬的尘埃 | 小虾三级 |园豆:1318 | 2013-05-24 17:09

你是说WebService端是没有办法直接获取到传递的参数吗?

其小本 | 园豆:37 (初学一级) | 2013-05-24 17:16

@其小本: 我刚试了下,ajax访问ashx类时,post带json参数,是可以用request.form来获取参数的。webservice就不太清楚了,直接post字符串试试?

飞扬的尘埃 | 园豆:1318 (小虾三级) | 2013-05-24 17:21

@飞扬的尘埃: ashx我也试了 是可以的。 webservice里边除了在方法里自带同名参数外怎么招都接收不到。

可是我要传一个对象,这个对象有100多个属性,显然不合适。只有传字符串好了。

其小本 | 园豆:37 (初学一级) | 2013-05-27 12:01

@其小本: 最近我也遇到类似问题了,来补充一下。对于结构极为复杂的json格式参数,如果需要通过Ajax提交,需要使用JSON.stringify(obj)方法将该参数格式化。

其原因是,Ajax提交的json参数,只能是1级结构的json对象,例如 { action: 'update', id: 13, name: '其小本' } 是可以提交的,而如果写成 { action: 'update', cnbloger: {id: 13, name: '其小本'}}, 则服务器接收到的参数 cnbloger 将不可识别。

另外,由于IE8及以下版本不支持 JavaScript JSON 对象,如需兼容这些版本的浏览器,则需要到json.org 下载 json2.js 文件,添加到项目中。

飞扬的尘埃 | 园豆:1318 (小虾三级) | 2013-10-30 17:40
其他回答(1)
0

会按照参数名称帮你转化为web service API对应的方法参数吧,

滴答的雨 | 园豆:3660 (老鸟四级) | 2013-05-24 17:05

不太明白您的意思呀~

支持(0) 反对(0) 其小本 | 园豆:37 (初学一级) | 2013-05-24 17:08
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册