JQUERY调用Webservice

请求webservice的时候,主要是请求webservice中的方法,在请求之前不要忘记了代码开头的那段取消注释的提示“//若要允许使用 ASP.NET AJAX从脚本中调用此 Web服务,请取消对下行的注释。

                   // [System.Web.Script.Services.ScriptService]

请求webservice中的方法的处理方式和请求aspx页面后台方法的处理方式类似,但也有一些不同。

 被请求的webservice中方法的特点:

(1)   请求的方法必须是为public的。

(2)  方法必须有[WebMethod]标记。

(3) 如果想使用Get的方式请求,还要有[ScriptMethod(UseHttpGet=true)]标记。使用Get请求Webservice的方法的时候,只添加这个标记是不够的,还要修改Web.Config文件,让WebService支持Get方式请求,否则会出现URL 意外地以“/GetXmlByGet”结束,请求格式无法识别。“的错误。修改方法为:在System.web配置节下添加以下红色的内容:

  
  
  
  
<System.web> …………… <webServices>       <protocols>         <add name="HttpGet"/>         <add name="HttpPost"/>       </protocols>     </webServices>
(4)  请求 xml 数据类型的时候,要注意,如果方法返回的是 string 类型的,返回的 xml 格式是这样的:

如果方法返回的是字符串,则会把返回的字符串包装在<string>标签中返回。

   比如以下方法请求后的返回值: 

    [WebMethod]

public string GetXmlByPost()
{
   return "我是通过Post方式请求返回的xml ";
}

返回值:

<?xml version="1.0" encoding="utf-8"?>

<string xmlns="http://tempuri.org/">我是通过Post方式请求返回的xml</string>

红色部分是被请求方法返回的字符串,其他是自动添加的,所以在前台中通过jquery获取数据的时候,应该$(res).find(”string”).text();

如果方法返回的是xmlDocument对象,则就是方法中构造的xml对象。

    比如以下方法请求后的返回值: 

     // 使用Get方式请求xml,注意返回的字符串一定要是可以解析的xml格式。

[WebMethod]
[ScriptMethod(UseHttpGet = true)]
public System.Xml. XmlDocument GetXmlByGet()
{
   string xml = "<?xml version=\"1.0\" encoding=\"utf-8\"?><my>我是通过Get方式请求返回的xml</my>";
    System.Xml.XmlDocument doc = new System.Xml.XmlDocument();
   doc.LoadXml(xml);
   return doc;


返回的响应为:

<?xml version=\"1.0\" encoding=\"utf-8\"?><my>我是通过Get方式请求返回的xml</my>

此时就可以通过$(res).find(”my”).text()的方式取数据了。此时操作的完全是你自己构造的xml

 

(5)   关于请求返回JSON需要注意的就是,返回的也是“[d:{}]”格式的数据,所在前台获取的时候,一定要加个”.d”,其他的和xml差不多了。

(6)    Text的类型的就不多说了。

 


 

你可能感兴趣的:(JQUERY调用Webservice)