成人精品一区二区三区中文字幕-成人精品一区二区三区-成人精品一级毛片-成人精品亚洲-日本在线视频一区二区-日本在线视频免费

導航首頁 ? 技術教程 ? jQuery 調用WebService 實例講解
全站頭部文字 我要出現在這里
jQuery 調用WebService 實例講解 808 2024-02-26   

1.首先建一個WebService程序

/// <summary>
/// WebService1 的摘要說明
/// </summary>
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[ToolboxItem(false)]
// 若要允許使用 ASP.NET AJAX 從腳本中調用此 Web 服務,請取消對下行的注釋。
[System.Web.Script.Services.ScriptService]
public class WebService1 : System.Web.Services.WebService
{

 [WebMethod]
 public string HelloWorld()
 {
  CommonData.Json.ObjectSerialization ser = new CommonData.Json.ObjectSerialization();
  Student stu = new Student();
  stu.Id = 1;
  stu.Name = "hechen";
  string json = ser.EntityToJson(stu);
  return json;
 }
}

  [System.Web.Script.Services.ScriptService] 這里得注意,默認情況下這個特性是注釋起來的,如果想用Javascript來調用WebService 就要取消這個注釋

  WebService 的內容不必多說,用Jquery調用WebService 返回肯定是一個xml。而xml是說明文件,而不是具體方法返回的值,所以我們做適當的處理。我們這里WebService方法返回的是JSON數據,以便在前臺解析。下載是實體類序列化JSON的代碼。

2. 實體對象序列化JSON

/**
 * 
 * 2009-5-26
 * 賀  臣
 * 
 * 將某個對象轉化為Json數據格式
 * */
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using System.Data;
using System.ServiceModel.Web;
using System.Runtime.Serialization;
using System.Runtime.Serialization.Json;

namespace CommonData.Json
{
 public class ObjectSerialization
 {
  private object _entity;

  /// <summary>
  /// 被序列化得實體對象
  /// </summary>
  public object Entity
  {
   get { return _entity; }
   set { _entity = value; }
  }

  private string _jsonData;

  /// <summary>
  /// 被轉化為json格式數據的對象
  /// </summary>
  public string JsonData
  {
   get { return _jsonData; }
   set { _jsonData = value; }
  }

  /// <summary>
  /// 無參數構造方法
  /// </summary>
  public ObjectSerialization()
  { 
  }

  /// <summary>
  /// 有參數構造方法
  /// </summary>
  /// <param name="entity">要被序列化得實體對象</param>
  public ObjectSerialization(object entity)
  {
   this._entity = entity;
  }


  /// <summary>
  /// 序列化實體對象
  /// </summary>
  /// <returns></returns>
  public string EntityToJson()
  {
   var serializer = new DataContractJsonSerializer(Entity.GetType());
   MemoryStream ms = new MemoryStream();
   serializer.WriteObject(ms, Entity);
   byte[] myByte = new byte[ms.Length];
   ms.Position = 0;
   ms.Read(myByte, 0, (int)ms.Length);
   string dataString = Encoding.UTF8.GetString(myByte);
   return dataString;
  }


  /// <summary>
  /// 序列化實體對象
  /// </summary>
  /// <param name="entity">要被序列化得實體對象</param>
  /// <returns></returns>
  public string EntityToJson(object entity)
  {
   this._entity = entity;
   return EntityToJson();
  }

  /// <summary>
  /// 將Json格式數據轉換為對象
  /// </summary>
  /// <returns></returns>
  public T GetObjectJson<T>()
  {
   MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(JsonData));
   var serializer = new DataContractJsonSerializer(typeof(T));
   T t = (T)serializer.ReadObject(ms);
   return t;
  }

  /// <summary>
  /// 將Json格式數據轉換為對象
  /// </summary>
  /// <param name="jsonData">json數據格式</param>
  /// <returns></returns>
  public T GetObjectJson<T>(string jsonData)
  {
   this._jsonData = jsonData;
   return GetObjectJson<T>();
  }
 }
}

  注意序列化實體必須用可序列化特性修飾,如Serialiable,否則它不能序列化為JSON數據字符串

3.前臺程序Jquery調用

<script src="http://www.gimoo.net/t/1901/jquery-1[1].2.3.min.js" type="text/javascript"></script>
<script src="http://www.gimoo.net/t/1901/json2.js" type="text/javascript"></script>
<script type="text/javascript">
 $(document).ready(function() {
 $("#btnClick").click(function() {
   $.ajax({
    url:"http://localhost:10168/WebService1.asmx/HelloWorld",
    beforeSend: function(x) { 
           x.setRequestHeader("Content-Type", "application/json; charset=utf-8"); 
         },
    data:{},
    dataType:"json",
    type:"POST",
    error: function(x, e) { 
          alert(x.responseText); 
        }, 
       complete: function(x) { 
           //alert(x.responseText); 
          } ,
    success:function(data){
     var msg=data.d;
     var json=JSON2.parse(msg);
     alert(json.id);
    }
   });
   
  });
 });
</script>

  這里進入了Jquery的核心文件和一個JSON2.js文件

  url:"http://localhost:10168/WebService1.asmx/HelloWorld" 這個是調用WebService方法的路徑,HelloWorld 是WebService 中的方法。

  同時還要設置WebService請求后返回的參數格式(json),data是用于解釋返回的值。這里值得注意的是data是一個json格式的字符串,而且對象名為d,所以我們用到了后面的var msg=data.d;

  如果我們要能夠像JSON那個以 . 操作來訪問鍵值,我們就使用到了 JSON2.js 中的方法將 json字符串轉化為json對象,這樣就可以以. 操作來訪問對象了。

  如果我們需要調用帶參數的WebService ,則我們可以再data 中指定傳遞的參數,參數名要和WebService中方法參數名相同。

  在這里應該說是沒有問題,我在寫這個例子的時候,并不是這么順利,后來查了很多關于WebService的資料,原來我們要修改WebService中Web.config 的配置,否則我們不能以Url 那種格式訪問WebService。

  配置如下:

  在System.web 這個節點中添加如下配置即可

<webServices>
 <protocols>
 <add name="HttpGet"/>
 <add name="HttpPost"/>
 </protocols>
</webServices>

以上就是本文的全部內容,希望能給大家一個參考,也希望大家多多支持綠夏網。


Web

主站蜘蛛池模板: 小小少年电影简介| 经典常谈阅读笔记| 部队飞行安全大讨论心得体会| 夏希粟| 高志鹏| 人总要有点爱好,生活才能继续 | 《平凡之路》电影| 章家瑞| 《战长沙》电视剧| 电影白夜行| 幼儿园课题研究| 一级片黄色录像免费看| 永恒万花筒佐助壁纸| 李政宰演的电影| 一级毛片色一级| 大珍珠演员表介绍| 斋天仪规全文| 女生被打屁股网站| 男微信头像| 阮经天新电影| 陈宝莲徐锦江夜半2普通话| 狗年电影| 镇魂街第三季| 九龙城寨电影完整版观看| 战犬出击电影完整版免费观看| 罪孽天使| 男生变女生tg动画变身| 电影白蛇传| 小镇追凶电影在线观看| 文史茶馆| 包头电视台| 许薇| 奇骏车友会| 小淘气尼古拉| 大奉打更人电视剧免费在线观看 | 风间由美的作品| 篮球场平面图| 小野惠令奈| 十一码复式22块钱中奖对照表| 日韩在线操| 王同辉|

!!!站長長期在線接!!!

網站、小程序:定制開發/二次開發/仿制開發等

各種疑難雜癥解決/定制接口/定制采集等

站長微信:lxwl520520

站長QQ:1737366103