JQuery.getJSON aspxページからJSONデータを返す
JQueryのgetJSONメソッドは,バックグラウンドがaspxページである場合,どのような形式のデータを返すべきかについては,関連資料が非常に少ない.苦しい試みを経て,やっと成功した.次に例を示します.
1.要求を送信するWebForm 1.aspx
2.提供データのWebForm 2.aspx
注意データを返すフォーマット
string.Format("{0}({1})", callback, data)
1.要求を送信するWebForm 1.aspx
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="Benq.Flower.WebAdmin.Module.WebForm1" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
<script src="../javascript/jquery-1.2.3.pack.js" type="text/javascript" language="javascript"></script>
<script type="text/javascript" language="javascript">
function getData()
{
$.getJSON("WebForm2.aspx?jsoncallback=?",
function(data)
{
$.each(data.items, function(i, item)
{
$("<div></div>")
.text(item.title)
.css("color", item.color)
.appendTo($("#listbox"));
});
}
);
}
</script>
</head>
<body>
<form id="form1" runat="server">
<div>
<input id="Button1" type="button" value="click to get Json" onclick="javaScript:getData();" />
</div>
<div id="listbox">
</div>
</form>
</body>
</html>
2.提供データのWebForm 2.aspx
public partial class WebForm2 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
string callback = Request.QueryString["jsoncallback"];
string data = "{\"title\": \"Recent Uploads tagged cat\",\"link\": \"http://www.sina.com.cn\",\"items\": [{\"title\": \"Russell 003\",\"color\": \"red\"},{\"title\": \"Cat [07.04.11]\",\"color\": \"yellow\"}]}";
string result = string.Format("{0}({1})", callback, data);
Response.Expires = -1;
Response.Clear();
Response.ContentEncoding = Encoding.UTF8;
Response.ContentType = "application/json";
Response.Write(result);
Response.Flush();
Response.End();
}
}
注意データを返すフォーマット
string.Format("{0}({1})", callback, data)