post提交的数据为json格式,在webservice的方法里如何获取。
提交的数据格式如图
我知道在webservice的方法里设置参数,ajax提交时用同样名字的参数可以直接就能获得参数的值。但是这个方法是要传一个对象,这个对象有100多个属性。在方法里写100多个参数显然不合适。所以用了提交json数据,但是在webservice里如何获取请求的json数据值呢
Context.Request.Form["id"].ToString(); 报错“未将对象引用到对象的实例”
如果不打算设计模型,那么你的WebService端至少需要类似于Json.NET这样的Json框架来构建JsonObject,通过JsonObject调用属性。
你是说WebService端是没有办法直接获取到传递的参数吗?
@其小本: 我刚试了下,ajax访问ashx类时,post带json参数,是可以用request.form来获取参数的。webservice就不太清楚了,直接post字符串试试?
@飞扬的尘埃: ashx我也试了 是可以的。 webservice里边除了在方法里自带同名参数外怎么招都接收不到。
可是我要传一个对象,这个对象有100多个属性,显然不合适。只有传字符串好了。
@其小本: 最近我也遇到类似问题了,来补充一下。对于结构极为复杂的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 文件,添加到项目中。
会按照参数名称帮你转化为web service API对应的方法参数吧,
不太明白您的意思呀~