1. 程式人生 > >.NET中一般處理程式(ashx)在Ajax中的使用--下拉列表的動態級連

.NET中一般處理程式(ashx)在Ajax中的使用--下拉列表的動態級連

NET框架中有一個檔案型別是一般處理檔案(.ashx)。可以在ajax開發中作為伺服器端使用。特別是當在請求停留在一個頁面的時候,下面舉個例子--實現html下拉列表的級連更新。

(1)ddlInnerJoin.aspx程式碼:

<head runat="server">
    <title>無標題頁</title>
    <script type ="text/javascript" src="ddlInnerJoin.js"></script>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <select id="major" onchange ="startRequest();">
            <option value ="1">軟體技術</option>
            <option value ="2" >網路技術</option>
        </select>
        <select id="class">
        </select>
    </div>
    </form>
</body>

(2)ddlInnerJoin.js程式碼:

var xmlHttp;
var requesttype="";
    function createXmlHttp()
    {
    if(window.XMLHttpRequest)
    {
        xmlHttp=new XMLHttpRequest();//mozilla瀏覽器
    }
    else if(window.ActiveXObject)
    {
        try
        {
            xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");//IE舊版本
        }
        catch(e)
        {
        }
        try
        {
            xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");//IE新版本
        }
        catch(e)
        {
        }
        if(!xmlHttp)
        {
            window.alert("不能建立XMLHTTPREQUEST物件!");
            return false;
        }
    }
}
function startRequest()
{
    createXmlHttp();
    //使用GET方式
    var url="ddlInnerJoin.ashx?major="+document.getElementById("major").options.value;
    xmlHttp.open("GET",url,true);
    xmlHttp.onreadystatechange=bindclass;
    xmlHttp.send(null);
   
}
function bindclass()
{
    if(xmlHttp.readyState==4)
    {
        if(xmlHttp.status==200)
        {
              var selclass=document.getElementById("class");
              //如果被動(被激發的)下拉有內容,要首先清空
              while(selclass.hasChildNodes())
              {
                 var node=selclass.children(0)
                 selclass.removeChild(node);
              }
              //獲取響應內容        
              var result=xmlHttp.responseText;
              //分割以方便繫結
              var optiontext=result.split(' ');
              //將分割後的內容繫結到被動下拉列表
              for(var i=0;i<optiontext.length;i++)
              {
                    var optionnode=document.createElement("OPTION");
                    optionnode.text=optiontext[i];
                    selclass.add(optionnode);
              }
        }
    }
}

(3)ddlInnerJoin.ashx程式碼:

<%@ WebHandler Language="C#" Class="ddlInnerJoin" %>
using System;
using System.Web;
//由於要訪問資料庫,引入名稱空間
using System.Data.SqlClient;
using System.Data;
public class ddlInnerJoin : IHttpHandler {
   
    public void ProcessRequest (HttpContext context) {
        context.Response.ContentType = "text/plain";
        string majorid = context.Request.Params["major"].ToString().Trim();
        string major = "";
        //避免不識別漢字
        if (majorid == "1")
        {
            major = "軟體技術";
        }
        else if (majorid == "2")
        {
            major = "網路技術";
        }
        //從資料庫提取資料
        SqlConnection conn = new SqlConnection("server=.;database=Tuition;uid=sa;pwd=sa;");
        SqlDataAdapter da = new SqlDataAdapter("select classname from dictblclass where classname like '" + major + "%'", conn);
        DataSet ds = new DataSet();
        da.Fill(ds);
        //定義響應文字的格式,以返回
        string result = "";
        foreach (DataRow row in ds.Tables[0].Rows)
        {
            result +=row[0].ToString().Trim() + " ";
        }
        context.Response.Write(result.Trim ());
        //context.Response.Write("Hello World");
    }

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

這樣就可以輕鬆實現級連更新了,特別是資料量大的時候效果更明顯。

相關推薦

.NET一般處理程式(ashx)在Ajax的使用列表動態

NET框架中有一個檔案型別是一般處理檔案(.ashx)。可以在ajax開發中作為伺服器端使用。特別是當在請求停留在一個頁面的時候,下面舉個例子--實現html下拉列表的級連更新。 (1)ddlInnerJoin.aspx程式碼: <head runat="server"

.NET一般處理程式(ashx)在Ajax的使用

NET框架中有一個檔案型別是一般處理檔案(.ashx)。可以在ajax開發中作為伺服器端使用。特別是當在請求停留在一個頁面的時候,下面舉個例子--實現html下拉列表的級連更新。(1)ddlInnerJoin.aspx程式碼:<head runat="server">     <titl

Js$.ajax呼叫一般處理程式(.ashx)

     $.ajax({                     type: "post",                     url: "/tools/ActApply.ashx",

.net Ajax與後臺一般處理程式(ashx) 互動

    本文主要實現無動態重新整理查詢後臺資料功能,主要用到ajax+ashx+sqlserver進行互動. 首先需要引用Jquery: <script language="javascript" type="text/javascript" src="../js/jquery.js"> h

ASP.NET -- 一般處理程式ashx

ASP.NET  --   一般處理程式ashx 如果在一個html頁面向伺服器端請求資料,可用ashx作為後臺頁面處理資料。ashx適合用作資料後臺處理,相當於WebForm中的aspx.cs檔案或aspx.vb檔案。 入門案例:html頁面向ashx頁面請求資料,ashx作為後臺頁

ASP.Net原理篇 之 一般處理程式(ashx)

在學習asp.net期間 老師反覆告訴我們 千萬不要做只會 “拖控制元件的”ASP.Net程式設計師!!!何為 只會 “拖控制元件的”ASP.Net程式設計師? 當初微軟推出ASP.Net的時候 那個時候VB、delphi等“拖控制元件”式的語言相當的火爆 微軟為了把這些程式設計師全部拉攏過來使用ASP.Ne

ashx一般處理程式接收ajax傳回的json字串,並寫入到資料庫

首先將json物件轉為json字串 var aToStr = JSON.stringify(graphicStr);   //json轉字串 然後ajax 通過post請求 $.ajax({                     type: 'post',        

一般處理程式ashx的post請求

  ashx可直接獲取HttpContext物件,雖然很靈活,但也導致操作有些許複雜,Content-Type和Request Body與mvc、webapi的不同。js則需要這樣寫 function btnSumit_click() { var da

Javascript與ASP.NET一般處理程式)關於URL(get方式)傳遞中文亂碼問題的解決方案

一、首先,說一下我要實現的功能 根據老師ID、學年、學期,查詢該教師教授的課程資訊。 二、傳遞引數我遇到的問題:     我通過傳遞教師ID、學年和學期從資料庫查詢出該教師所教的課程資訊,展現在介面上,從資料庫我能查詢出資料,為什麼在介面不出資料呢,我斷點除錯,發現這

使用jQuery+ajax實現列表聯顯示

html部分程式碼為下拉列表新增onchange事件         <div class="form-group" style="margin-right: 0">           

JAVA EE 專案常用知識 之AJAX技術實現select列表聯動的兩種用法(讓你真正理解ajax

ajax 下拉列表聯動的用法。 ajax的定義: AJAX 是一種用於建立快速動態網頁的技術。 通過在後臺與伺服器進行少量資料交換,AJAX 可以使網頁實現非同步更新。這意味著可以在不重新載入整個網頁的情況下,對網頁的某部分進行更新。 ajax效果的一個例子: 區域為

AJAX筆記-實現城市列表聯動框

    學習一門新技術不外乎掌握四個點(what、how、where、why)! 一、什麼是AJAX?(what) 首先要了解什麼是同步?什麼是非同步的問題。        同步就是當瀏覽器提交請求到伺服器時,伺服器必須要響應瀏覽器,這樣瀏覽器才能繼續傳送請求。簡單來說就

ASP.NETASHX一般處理程式Session為null且不能賦值

首先我解釋一下 ashx檔案以前我們做ajax處理的時候要用常用的web介面處理。 現在不用了,微軟有ashx檔案,這個檔案就是後臺一些處理檔案,用extjs的同學可能會更清楚一點。 如果在這個檔案中用session,會提示失效的,網上找了很久終於找到解決辦法如下 如圖所

ashx一般處理程式的Session讀寫問題

在.aspx.cs頁中讀寫Session都是Session["***"]就可以獲取或者寫入。但是在一般處理程式也就是ashx頁面中,再這樣寫的話,就會為null, 解決辦法是先要新增名稱空間using System.Web.SessionState; 然後再繼承介面 其中

.NET使用WebService,以及和一般處理程式、類庫的區別

  首先我們來看一下如何建立Web Service 首先在解決方案中新建項,選擇ASP.NETWeb應用程式 然後選擇一個空的專案就可以,單擊確定 專案建完之後,在專案上右鍵-->新增-->新建項,選擇 Web服務(ASMX),新增 如果想要新增新的函式,必須在函式上方打上Web

一般處理程式使用隱藏域來實現非Form表單元素上資料的改變

html程式碼: <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <me

C# get與post請求,在一般處理程式handler的應用Request.QueryString和Request.Form的用法,利用postman工具進行請求

一、Get 請求 1.引數存放在請求頭中header。(postman工具能夠證明,Body不可選) 2.字串大小有限制,需要小於2k位元組。 3. handler 接受引數Request.Q

一般處理程式讀寫 cookie

                  if (context.Request.Cookies["MyCookie"]!= null)                 {                     string ids = context.Request.C

Linqdatetime的處理以及asp.net列表控件的selectitem,text等的設置顯示處理

selected 接受 str 同時 類型 ddp cte 設置 varchar dhl:報錯:LINQ to Entities 不支持指定的類型成員“Date” Linq如: var v = from l in _dal.Share where l

ashx一般處理程式

http://192.168.2.112/AjaxQueryService.ashx/LOGINVALIDATE?username=1&passwordlogin=1   .NET裡面webform的字尾是aspx WCF和WebService的字尾是asmx 然後