jQuery Ajax解析XML数据同步与异步调用示例

作者:异步漫步时间:2026-10-27 22:26:42浏览:605

本文详细演示如何使用jQuery的Ajax方法解析XML数据。通过配置dataType为xml,分别展示了同步与异步请求的处理方式,并提供了C# Ashx后端生成XML响应的完整代码。内容涵盖success回调中遍历节点、提取属性及文本值的多种JQuery写法,适用于需要前后端交互处理结构化数据的场景。

jQuery Ajax解析XML配置与调用

代码如下:

$.ajax({
async: true, // 默认值为true,表示异步请求
cache: true, // 默认值为true,若设置为false,则不会从浏览器缓存中加载请求信息
type: "POST", // 默认请求方式为GET,可选方式包括POST或GET
dataType: "xml", // 默认返回数据类型包括"xml"或"html",其他可选值包括"script"、"json"、"jsonp"
url: "Test.ashx", // 默认发送地址为当前页面地址,此处指定请求目标地址
data: { key: "value" }, // 指定发送至服务器的数据内容
error: function(xml) { alert('Error loading XML document' + xml); }, // 请求失败时的回调函数
timeout: 1000, // 设置请求超时时间为1000毫秒
success: function(xml) { // 请求成功后的回调函数,参数为服务器返回的数据及数据格式
$("#users").empty();
// 使用Jquery处理xml数据
$(xml).find('Table').each(function() {
var loginname = $(this).find("Loginname").text();
var Name = $(this).find("Name").text();
$("#users").append("<li>" + loginname + " - " + name + "</li>");
                    });
                    /*
$(xml).find('user').each(function(i) {
var loginname = $(xml).find("user loginname").eq(i).text();
var name = $(xml).find("user name").eq(i).text();
$("#users").append("<p>" + loginname + "</p>" + "<p>" + name + "</p><Br />");
                    }) 
$(xml).find("student").each(function(i){
var id = $(this).find("id"); // 获取对象
var id_value=$(this).children("id").text(); // 获取文本内容
alert(id_value);//此处输出ID的值
alert($(this).attr("email")); // 此处可显示student节点下的email属性
// 以下为最后输出部分,参考cssrain的写法,风格更贴近JQuery
 $('<li></li>').html(id_value).appendTo('ol');
 });
 */
 }
 })

C# Ashx后端生成XML数据示例

使用ashx文件返回XML数据:


代码如下:

<%@ WebHandler Language="C#" %>
using System;
using System.Web;
using System.Text;
using System.Data;
public class Test : IHttpHandler {
 public void ProcessRequest (HttpContext context) {
 context.Response.StatusCode = 200;
 context.Response.Cache.SetCacheability(HttpCacheability.NoCache);
DataSet ds = new DataSet("AccountList");
 ds = GetList("Account","AccountId","Loginname,Name",50,1,false, false,"1=1");
 context.Response.ContentType = "text/xml";
 context.Response.Charset = "GB2312";
 context.Response.Clear();
 context.Response.Write("<?xml version=\"1.0\" encoding=\"gbk\"?>\n " + ds.GetXml());
/*
 StringBuilder sb = new StringBuilder();
 sb.Append("<?xml version=\"1.0\" encoding=\"gbk\"?>");
 sb.Append("<AccountList>");
 sb.Append("<Account><loginname>Loro5</loginname><name>wulu</name></user>");
 sb.Append("</Account>");
 context.Response.Write(sb.ToString());
 */
context.Response.End();
}
 public bool IsReusable {
 get {
 return false;
 }
 }
}
作者最新文章