Johnny_Z

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
  58 随笔 :: 1 文章 :: 32 评论 :: 46万 阅读

使用jQuery的$.getJson方法可以异步的获取服务器端返回的json字符串。

$.getJson方法语法

$.getJson(url,parameters,callback)

参数

 

url

(字符串)将要通过GET方法进行交互的服务器端资源的url。

parameters

(对象)一个对象,其属性作为“键/值”用于构造查询字符串并追加到url;或者一个预格式化和uri编码的查询字符串。

callback

(函数)回调函数,在请求完成时被调用。把响应体解析为json字符串,这个字符串的值作为第一个参数传递到这个回调函数,响应状态作为第二个参数传递到该函数。

返回值

XHR实例

下面看个例子

客户端代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<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>

服务端主要代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
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.5
 
public 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;
    }
  }
}

运行程序,结果如图:

clip_image002

如果你不熟悉json格式,也不要紧。可以使用System.Web.Script.Serialization(framework 3.5)命名空间下为格式化为json的帮助类。我们可以把服务器端Page_Load事件中注释的代码变为可用。把Response.Write(GetJSONData())这句注释掉。再运行程序,结果没有问题,如下图。它把类直接格式化为json字符串,省去了很多时间。

clip_image004

Demo下载

posted on   Johnny_Z  阅读(13719)  评论(0编辑  收藏  举报
编辑推荐:
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· .NET Core 托管堆内存泄露/CPU异常的常见思路
阅读排行:
· DeepSeek “源神”启动!「GitHub 热点速览」
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
· DeepSeek R1 简明指南:架构、训练、本地部署及硬件要求
· NetPad:一个.NET开源、跨平台的C#编辑器
点击右上角即可分享
微信分享提示