使用jQuery的$.getJson方法可以非同步擷取伺服器端返回的json字串。
$.getJson方法文法
$.getJson(url,parameters,callback) |
參數 |
|
url |
(字串)將要通過GET方法進行互動的伺服器端資源的url。 |
parameters |
(對象)一個對象,其屬性作為“鍵/值”用於構造查詢字串並追加到url;或者一個預格式化和uri編碼的查詢字串。 |
callback |
(函數)回呼函數,在請求完成時被調用。把響應體解析為json字串,這個字串的值作為第一個參數傳遞到這個回呼函數,響應狀態作為第二個參數傳遞到該函數。 |
傳回值 |
XHR執行個體 |
下面看個例子
用戶端代碼:
<html xmlns="http://www.w3.org/1999/xhtml"><head><title></title><script src="Scripts/jquery-1.4.1.min.js" type="text/javascript"></script><script type="text/javascript">$().ready(function () { $('#clk').click(function () { var num = $(this).val(); $.getJSON('Server.aspx', callback) }) function callback(json, status) { $.each(json, function (i) { $('#show').append('name:' + json[i]['Name'] + 'age:' + json[i]['Age'] + '<br/>'); }) }})</script></head><body><input id="clk" type="button" value="button" /><div id="show"></div></body></html>
服務端主要代碼:
using System;using System.Collections.Generic;using System.Web;using System.Web.UI;using System.Web.UI.WebControls;using System.Web.Script.Serialization;//適用於.NetFramework 3.5public partial class Server : System.Web.UI.Page{ protected void Page_Load(object sender, EventArgs e) { if (!Page.IsPostBack) { //List<Person> per = new List<Person>(); //per.Add(new Person("張三", 18)); //per.Add(new Person("李四", 19)); //JavaScriptSerializer jsonHelper = new JavaScriptSerializer(); //string json = jsonHelper.Serialize(per); //Response.Write(json); Response.Write(GetJSONData()); } } protected string GetJSONData() { string str = string.Empty; //特別要注意json的返回格式,如果格式不正確將不能正常調用用戶端的回呼函數 str = "[{\"Name\":\"張三\",\"Age\":\"14\"}," + "{\"Name\":\"李四\",\"Age\":\"17\"}," + "{\"Name\":\"王五\",\"Age\":\"19\"}]"; return str; } public class Person { private string name; private int age; public string Name { get { return name; } set { name = value; } } public int Age { get { return age; } set { age = value; } } public Person(string name, int age) { this.name = name; this.age = age; } }}
運行程式,結果
如果你不熟悉json格式,也不要緊。可以使用System.Web.Script.Serialization(framework 3.5)命名空間下為格式化為json的協助類。我們可以把伺服器端Page_Load事件中注釋的代碼變為可用。把Response.Write(GetJSONData())這句注釋掉。再運行程式,結果沒有問題,如。它把類直接格式化為json字串,省去了很多時間。
Demo下載