asp.net中Jquery ajax和ashx的结合使用

本文介绍如何使用JQuery AJAX与ASHX进行数据交互,包括获取文本和JSON格式的数据,并展示JavaScriptSerializer序列化DataTable的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一 aspx中Jquery ajax和ashx的结合使用

1. aspx中代码:

<script type="text/javascript" language="javascript">
 function GetCategoryData(type)
 {
     $.ajax({
 
  type:'GET',   //获得数据的方式 get 和post

  url: 'JsonHandler.ashx',  //url地址也可以是txt文本
  dataType: 'text',   //数据类型 text 、json等
  data:'type='+type,  //传递的参数 最后呈现效果 JsonHandler.ashx?type='';
  success:function(msg)  {  $("#category").html(msg);  },  //成功时的处理
  error: function(data){  alert(data);}  //失败时的处理
 
  })
 }
</script>

<form id="form1" runat="server">
    <div>
    <input type="radio" value="1" name="wangtao"  onclick='GetCategoryData(this.value)' />
    <input type="radio" value="2" name="wangtao" onclick='GetCategoryData(this.value)' />
    <input type="radio" value="8" name="wangtao" onclick='GetCategoryData(this.value)' />
    <input type="radio" value="9" name="wangtao" onclick='GetCategoryData(this.value)' />
    <select id="category" >
    </select>
    </div>
    </form>

2 .ashx中代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Services;
using System.Text;

namespace AuditSystem
{
    /// <summary>
    /// $codebehindclassname$ 的摘要说明
    /// </summary>
    [WebService(Namespace = "http://tempuri.org/")]
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
    public class JsonHandler : IHttpHandler
    {

        public void ProcessRequest(HttpContext context)
        {
            StringBuilder strBul = new StringBuilder();
            strBul.Append("<option value='wangtao'>");
            strBul.Append(context.Request.Params["type"].ToString());
            strBul.Append("</option>");
            context.Response.ContentType = "text/html";
            context.Response.Write(strBul.ToString());
        }

        public bool IsReusable
        {
            get
            {
                return false;
            }
        }
    }
}

二 jQuery中使用Ajax获取JSON格式数据

首先,music.txt中的内容如下:
[
{"optionKey":"1", "optionValue":"Canon in D"},
{"optionKey":"2", "optionValue":"Wind Song"},
{"optionKey":"3", "optionValue":"Wings"}
]
接下来是HTML代码:
<div>点击按钮获取JSON数据</div>
<input type="button" id="button" value="确定" />
<div id="result"></div>
使用Ajax获取JSON数据的jQuery代码:
$(document).ready(function(){
	$('#button').click(function(){
		$.ajax({
			type:"GET",
			url:"music.txt",
			dataType:"json",
			success:function(data){
				var music="<ul>";
				//i表示在data中的索引位置,n表示包含的信息的对象
				$.each(data,function(i,n){
					//获取对象中属性为optionsValue的值				
					music+="<li>"+n["optionValue"]+"</li>";
				});
				music+="</ul>";
				$('#result').append(music);
			}
		});
		return false;
	});
});
使用Js获取.ashx 的JSON数据的代码:
<script type="text/javascript">
        function getJson() {
            // 在IE7下测试通过,IE6下必须创建 new ActiveXObject("MSXML2.XMLHTTP.6.0")
            var request = new XMLHttpRequest();

            request.open('GET''GetJson.ashx');
            request.onreadystatechange = function() {
                if (request.readyState == 4 && request.status == 200) {
                    var objs = eval(request.responseText);
                    alert(objs.length); // 2
                    alert(objs[0].id);  // 1
                    alert(objs[1].name);// 'n_2'
                }
            }
            request.send(null);
        }
    </script>
2 $.getScript("ashx/Handler.ashx", function (data) { alert(data);  }); //y也是其中一种
当然,也可以使用$.getJSON()方法,代码简洁一点:
$(document).ready(function(){
	$('#button').click(function(){
		$.getJSON('music.txt',function(data){
//Handler.ashx?action=name ,function(data){}
		var music="<ul>";
			$.each(data,function(i,n){
				music+="<li>"+n["optionValue"]+"</li>";
			});
			music+="</ul>";
			$('#result').append(music);
		});
		return false;
	});
});

 三 JavaScriptSerializer 类序列化datatable数据:

      public string Serialize(System.Data.DataTable dt)
        {
            JavaScriptSerializer serializer = new JavaScriptSerializer();
            List<Dictionary<string, object>> list = new List<Dictionary<string, object>>();
            foreach (DataRow dr in dt.Rows)
            {
                Dictionary<string, object> result = new Dictionary<string, object>();
                foreach (DataColumn dc in dt.Columns)
                {
                    result.Add(dc.ColumnName, dr[dc].ToString());
                }
                list.Add(result);
            }
            return serializer.Serialize(list); ;
        }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值