您的位置:首页 > Web前端 > JQuery

jQuery中的ajax应用

2010-07-13 13:37 323 查看
jQuery给我们提供了ajax()方法,其中可以解析不同的返回格式,下面介绍其中3种格式的解析:

aspx页面

<%@ Page Language="C#" AutoEventWireup="true"  CodeFile="Default.aspx.cs" Inherits="_Default" %>

<!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>jQuery的ajax方法测试Demo</title>
<mce:script type="text/javascript" src="js/jquery-1.3.2.js" mce_src="js/jquery-1.3.2.js"></mce:script>
<mce:script type="text/javascript"><!--
$(document).ready(function() {
$(".wishtabdiv1 li").hover(function() {
$.ajax({
type: "get",                             //通过get方式
url: "AjaxTab1.ashx", //目标的url是AjaxTab.ashx
timeout: 3000,

data:{type:$(this).get(0).title} ,                               //3秒后超时
beforeSend: function(XMLHttpRequest) {    //发送前
$("#wishtab1").html("<img alt='loading' width='80px' src="images/loading.jpg" mce_src="images/loading.jpg" />");
},
success: function(data) {              //成功获取后
$("#wishtab1").get(0).innerHTML = data;
if ($("#wishtab1").get(0).innerHTML == '') {
$("#wishtab1").html('暂无相关新闻');
}
},
error: function(XMLHttpRequest, errormsg) {

$("#wishtab1").html('<input type="button" value="服务器繁忙,请稍候再试"/>');

}
});
});
});

$(document).ready(function() {
$(".wishtabdiv2 li").hover(function() {
$.ajax({
type: "get",                             //通过get方式
url: "AjaxTab2.ashx", //目标的url是AjaxTab.ashx
timeout: 3000,                          //3秒后超时
data: { type: $(this).get(0).title },
dataType: "xml",
beforeSend: function(XMLHttpRequest) {    //发送前
$("#wishtab2").html("<img alt='loading' width='80px' src="images/loading.jpg" mce_src="images/loading.jpg" />");
},
success: function(xml) {                     //成功获取后
$("#wishtab2").html("");
$(xml).find('title').each(function() {
$("#wishtab2").get(0).innerHTML += ($(this).text() + "<br/>");
});
},
error: function(XMLHttpRequest, errormsg) {
$("#wishtab2").html('<input type="button" value="服务器繁忙,请稍候再试"/>');

}
});
});
});

$(document).ready(function() {
$(".wishtabdiv3 li").hover(function() {
$.ajax({
type: "get",                             //通过get方式
url: "AjaxTab3.ashx", //目标的url是AjaxTab.ashx
timeout: 3000,
dataType: "json",
data: { type: $(this).get(0).title },                               //3秒后超时
beforeSend: function(XMLHttpRequest) {    //发送前
$("#wishtab3").html("<img alt='loading' width='80px' src="images/loading.jpg" mce_src="images/loading.jpg" />");
},
success: function(json) {              //成功获取后
$("#wishtab3").html("");
var news = json.News;
$.each(news, function(i, n) {
$("#wishtab3").get(0).innerHTML += n.title + "<br />";
});
},
error: function(XMLHttpRequest, errormsg) {

$("#wishtab3").html('<input type="button" value="服务器繁忙,请稍候再试"/>');

}
});
});
});

// --></mce:script>
<mce:style type="text/css"><!--
body
{
width:100%;
}
.wishjquerytab1,.wishjquerytab2,.wishjquerytab3
{
width:100%;
}
.wishtabdiv1,.wishtabdiv2,.wishtabdiv3
{
width:100%;
margin:0 auto;
}
.wishjquerytab1 li,.wishjquerytab2 li,.wishjquerytab3 li
{
list-style-type:none;
float:left;
margin:2px 2px 2px 2px;
border:solid 1px black;
}
.wishactive1,.wishactive2,.wishactive3
{
background-color:Green;
}

--></mce:style><style type="text/css" mce_bogus="1">        body
{
width:100%;
}
.wishjquerytab1,.wishjquerytab2,.wishjquerytab3
{
width:100%;
}
.wishtabdiv1,.wishtabdiv2,.wishtabdiv3
{
width:100%;
margin:0 auto;
}
.wishjquerytab1 li,.wishjquerytab2 li,.wishjquerytab3 li
{
list-style-type:none;
float:left;
margin:2px 2px 2px 2px;
border:solid 1px black;
}
.wishactive1,.wishactive2,.wishactive3
{
background-color:Green;
}
</style>
</head>
<body>
<form id="form1" runat="server">
回传text文本流实例<br />
<div class="wishjquerytab1">
<div class="wishtabdiv1">
<ul>
<li title="0">
焦点
</li>
<li title="1">
体育
</li>
<li title="2">
经济
</li>
<li title="3">
娱乐
</li>
<li title="4">
社会
</li>
</ul>
</div>
<div class="wishcontent1">
<div id="wishtab1">
<asp:Button ID="btnTest" runat="server" Text="Test" />
</div>
</div>
</div>
<hr />
回传XML实例<br />
<div class="wishjquerytab2">
<div class="wishtabdiv2">
<ul>
<li title="0">
焦点
</li>
<li title="1">
体育
</li>
<li title="2">
经济
</li>
<li title="3">
娱乐
</li>
<li title="4">
社会
</li>
</ul>
</div>
<div class="wishcontent2">
<div id="wishtab2">
<asp:Button ID="Button1" runat="server" Text="Test" />
</div>
</div>
</div>
<hr />
回传JSON实例<br />
<div class="wishjquerytab3">
<div class="wishtabdiv3">
<ul>
<li title="0">
焦点
</li>
<li title="1">
体育
</li>
<li title="2">
经济
</li>
<li title="3">
娱乐
</li>
<li title="4">
社会
</li>
</ul>
</div>
<div class="wishcontent3">
<div id="wishtab3">
<asp:Button ID="Button2" runat="server" Text="Test" />
</div>
</div>
</div>
</form>
</body>
</html>


ashx1代码

<%@ WebHandler Language="C#" Class="AjaxTab" %>

using System;
using System.Data;
using System.Web;

public class AjaxTab : IHttpHandler {

public void ProcessRequest (HttpContext httpcontext) {
httpcontext.Response.ContentType = "text/plain";
int key = -1;
int.TryParse(httpcontext.Request.QueryString["type"].ToString(),out key);
DataSet ds = SqlHelp.GetDateSetSource(key);
System.Text.StringBuilder sb = new System.Text.StringBuilder();
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
sb.Append("<div>"+ds.Tables[0].Rows[i][1].ToString()+"</div>");
}
httpcontext.Response.Write(sb);
}

public bool IsReusable
{
get
{
return false;
}
}

}


ashx2代码

<%@ WebHandler Language="C#" Class="AjaxTab" %>

using System;
using System.Data;
using System.Web;

public class AjaxTab : IHttpHandler {

public void ProcessRequest (HttpContext httpcontext) {
httpcontext.Response.ContentType = "text/xml";
int key = -1;
int.TryParse(httpcontext.Request.QueryString["type"].ToString(),out key);
DataSet ds = SqlHelp.GetDateSetSource(key);
httpcontext.Response.Write(TranXml(ds));
}

public bool IsReusable {
get {
return false;
}
}

/// <summary>
/// dataset转换成xml
/// </summary>
/// <param name="ds"></param>
/// <returns></returns>
public string TranXml(DataSet ds)
{
string strXml = ds.GetXml();
return strXml;
}

}


ashx3代码

<%@ WebHandler Language="C#" Class="AjaxTab" %>

using System;
using System.Data;
using System.Web;
using System.Text;

public class AjaxTab : IHttpHandler {

public void ProcessRequest (HttpContext httpcontext) {
httpcontext.Response.ContentType = "application/json;charset=UTF-8";
int key = -1;
int.TryParse(httpcontext.Request.QueryString["type"].ToString(),out key);
DataSet ds = SqlHelp.GetDateSetSource(key);
httpcontext.Response.Write(TranJson(ds));
}

public bool IsReusable {
get {
return false;
}
}

/// <summary>
/// dataset转换成Json
/// </summary>
/// <param name="ds"></param>
/// <returns></returns>
public string TranJson(DataSet ds)
{
StringBuilder json = new StringBuilder();
json.Append("{");
foreach (DataTable dt in ds.Tables)
{
json.Append("/"" + "News" + "/":[");
foreach (DataRow dr in dt.Rows)
{
for (int i = 0; i < dt.Columns.Count; i++)
{
if (i == 0)
{
json.Append("{/"" + dt.Columns[i].ColumnName + "/":/"" + Convert.ToString(dr[i]) + "/",");
}
else if (i == dt.Columns.Count - 1)
{
json.Append("/"" + dt.Columns[i].ColumnName + "/":/"" + Convert.ToString(dr[i]) + "/"},");
}
else
{
json.Append("/"" + dt.Columns[i].ColumnName + "/":/"" + Convert.ToString(dr[i]) + "/",");
}
}
}
json.Remove(json.Length - 1, 1);
json.Append("],");
}
json.Remove(json.Length - 1, 1);
json.Append("}");
return json.ToString();
}
}


到了.net framework3.5有支持json的类,但我用的还是2.0,所以自己编写了一个转换方法。

还有一种jsonp格式的demo,下次有时间补上
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: