手机版

Jquery JSON WebService使用简介

时间:2021-11-20 来源:互联网 编辑:宝哥软件园 浏览:

作为一个优秀的JS框架,Jquery很容易使用。在实际开发过程中,利用JQ的AJAX功能调用WebService的接口实现AJAX功能已经成为一种常见的技术手段。网络服务接口的实现通常是用面向对象语言来实现的。因此,在WebService的接口功能中,难免会遇到简单数据类型之外的复杂数据类型。复杂数据的数据类型机器可以是网络服务接口中的参数,也可以是网络服务的返回值。本文的主要内容如下:1 .对于复杂类型的WebService接口的参数,调用JQ时如何表示JSON数据。2.JQ调用网络服务来获取JSON数据类型。3.调用JQ时,对Webservice返回的复杂数据类型有什么要求?环境:JQ版本:1.4.2,VS2008 SP1。测试1:对于WebService的简单参数类型:复制的代码代码如下:【web method(Description=' test method ')】公共字符串processpersonanfo(person person){ return person . namesperson . tel;} JQ呼叫代码如下:$。Ajax ({type:' post ',URL : ' webservice1.asmx/getstring', datatype 3360 ' JSON ',content type 3360 ' application/JSON;Charset=utf-8 ',data : ' { name ' : ' Zhang shan ' } ',success 3360 function(JSON){ alert(JSON . d)},error 3360 function(error){ alert(' call error ' error . responsetext);} });提示:在$。ajax函数,数据必须以字符串的形式表示JSON,而不是直接传入JSON数据。可能有些朋友分不清JSON对象和JSON对象字符串。实际上,字符串类似于C#中由“”引起的字符串,而JSON对象是直接用{}编写的。一个简单的测试方法是通过提醒功能直接弹出。如果显示[object:object],则它是一个JSON对象,否则它是一个字符串。结果如下:

测试2:对于WebService的复杂参数类型:复制的代码代码如下:【web method(Description=' test method ')】公共字符串processpersonanfo(person person){ return person . namesperson . tel;} Person实体:public class Person { public string name { get;设置;} public int Age { get设置;}公共字符串Address { get设置;}公共字符串Tel { get设置;}} JQ呼叫代码如下:$。Ajax ({type:' post ',URL : ' webservice1.asmx/processpersonalinfo', datatype 3360 ' JSON ',content type 3360 ' application/JSON;charset=utf-8 ',data : ' { person ' : { ' Name ' : ' zhansan ',' Age':28,' Address':'beijing ',Tel:'01082658866'}} ',Success :函数(JSON) {alert (JSON.d)},error :函数(error){ alert(' call error ' responsetext);} });结果如下:

调用过程类似于简单的参数类型,即通过在JS中使用一个表示person的person对象的字符串发送给客户端,WebService会自动将Person对象的字符串转换为Person实体对象。测试3:对于WebService的复杂返回类型,复制代码如下: web service接口函数的代码如下:【web method(Description=' test method ')】公共列表人getpersonallist()。{ listener persons=new listener { new Person { Address=' Beijing ',Age=25,Name='zhangshan ',Tel=' 01082678866 ' } }返回人员;}BR JQ呼叫代码如下:$。Ajax ({type:' post ',URL : ' webservice1.asmx/getpersonallist', datatype 3360 ' JSON ',content type : ' application/JSON;charset=utf-8 ',success:函数(json) { $(json.d)。每个(函数(){ alert(这个。名字是这个。年龄-这个。地址'-'这个。Tel) }) },Error :函数(Error){ alert(' call Error ' Error . responsetext);} });如下所示:

也就是说,对于复杂的返回类型,处理也很简单,基本上是一样的。我听说有一个概念,当Jq调用WebSevice,使用JSON作为数据交互格式时,返回的数据类型必须是可序列化的。真的是这样吗?毫无疑问,的基本数据类型。Net确实是可序列化的。那么ListT数据类型是可序列化的吗?看看ListT的元数据信息。[debugetypproxy(type of(Mscorlib _ CollectionDebugViewT))][debugdisplay(' Count={ Count } ')][Serializable]公共类ListT : IListT,Icollectiont,ienumerable,ilist,icollection,ienumerable {/* */}如果上述语句为真,那么在这种情况下,调用成功也是可以理解的。但是问题真的是这样吗?我们继续测试:测试4:对于WebService的复杂返回类型,复制代码如下:[web method(Description=' Test method ')]public Person GetPerson()。{ Person person=new Person {BR地址='北京',年龄=27,BR姓名='张山',电话=' 01082678866 ' BR };返回人;} JQ呼叫代码如下:$。Ajax ({type:' post ',URL : ' webservice1.asmx/getperson', datatype 3360 ' JSON ',content type 3360 ' application/JSON;charset=utf-8 ',//data : ' { ' person ' : { ' Name ' : ' Zhang San ',' Age':28,' Address':'beijing ',' Tel:'01082658866'}} ',success : function(JSON){ $(JSON . d)。每个(函数(){ alert(这个。名字是这个。年龄-这个。地址'-'这个。Tel) }) },Error :函数(Error){ alert(' call Error ' Error . responsetext);} });如下所示:

但是,在测试4中,GetPerson()方法返回Person数据类型。查看Person实体的定义,没有要序列化的标记问题。从结果可以看出,JQ在调用WebService时不一定需要返回复杂类型的数据,但必须是可序列化的。让我们做一个有趣的测试。每个人都知道网络服务的返回类型不能是哈希表。因为它是因为实现了IDictionary接口而实现的。测试5:对于WebService的复杂返回类型,复制代码如下:[WebMethod(Description=' test method ')]public hashtable getpersonalhashtable(){ hashtable hashtable=new hashtable();Person person=new Person {地址='北京',年龄=25,姓名='张山',电话=' 01082678866 ' };哈希表。加(1,人);返回哈希表;} JQ呼叫代码如下:$。Ajax ({type:' post ',URL : ' webservice1.asmx/getpersonalhashtable', datatype 3360 ' JSON ',content type 3360 ' application/JSON;Charset=utf-8 ',data:data,success 3360 function(JSON){ $(JSON . d)。每个(函数(){alert(这个['one'])。name)})},error : function(error){ alert(' call error ')。} });

这样,就可以成功调用Jq。这有点出乎意料。总结:1。当使用JSON作为Jq和WebService之间的数据交换形式时,内容类型: ' Application/JSON;必须指定Charset=utf-8。否则,网络服务不知道使用什么样的数据作为转换。2.Jq调用WebService返回的复杂数据类型不一定需要是可序列化的。3.网络服务返回的JSON数据是通过“”获得的。d' as alert(json.d)在上述测试中。

版权声明:Jquery JSON WebService使用简介是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。