ajax异步调用数据实例

ajax异步调用数据实例

通过ajax在客户端调用后台代码,通过后台代码更改,修复,查询数据,并把结果返回给客户端,在客户端获取到服务器返回的数据在做相应的操作,从而实现通过HTML控件操作一些在网页特效比较难实现的功能;比如通过HTML的控件访问查询数据库教程,并把结果传给客户端显示,这方面在google地图开发应用得比较多,下面以一个简单的实例说明:

添加一个.asp教程x的页面,命名为:ajaxPKashx.aspx,全部代码如下:

 1 <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="ajaxPKashx.aspx.cs" Inherits="AjaxTest.ajaxPKashx" %>
 2
 3  <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 4
 5  <html xmlns="http://www.w3.org/1999/xhtml" >
 6  <head runat="server">
 7     <title>通过ajax实现客户端获取后台数据</title>
 8  </head>
 9  <body>
10  <script language="javascript" type="text/javascript">
11     //对于没有XMLHttpRequest对象的浏览器,需要构造一个
12     //该方法可写在公共js文件中,定义全局变量保存
13     if (!window.XMLHttpRequest) {
14         window.XMLHttpRequest = function () {
15             return new ActiveXObject("Microsoft.XMLHTTP");
16         }
17     }
18     //HTML按钮控件的触发事件
19     function showUserInfo()
20     {
21         //获取传递参数
22         var userID = document.getElementById("tbID").value;
23         //接收返回的结果
24         var jsUserInfo = "";
25         //分解返回的结果字符串,数组形式出现
26         var objArray = new Array();
27         //定义一个XMLHttpRequest,用于请求sample.ashx文件
28         var aRequest = new XMLHttpRequest();
29         //异步调用sample.ashx文件并传参数
30        
31         //第一个参数传输方式
32         //第二个参数是目标的地址
33         //第三个参数是表示是否为异步调用,false非异步,即同步;为true则为异步调用
34         aRequest.open("POST","sample.ashx?userid=" + userID,true);
35        
36         ////请求完成将收到此事件
37         aRequest.onreadystatechange = function()
38         {
39             //状态4表示请求成功
40             if(aRequest.readyState == 4)
41             {
42                 //获取返回结果
43                 jsUserInfo = aRequest.responseText;
44                 //对返回结果处理
45                 if(jsUserInfo.length > 0)
46                 {
47                     objArray = jsUserInfo.split(",");
48                 }
49                 document.getElementById("spNo").value = objArray[0].toString();
50                 document.getElementById("spName").value = objArray[1].toString();
51                 document.getElementById("spTime").value = objArray[2].toString();
52             }
53         }
54         aRequest.send(null);
55     }
56 </script>
57     <form id="form1" runat="server">
58     <div>
59         <asp:TextBox ID="tbID" runat="server"></asp:TextBox>
60         <input id="btShow" type="button" value="button" onclick="showUserInfo();" />
61     </div>
62     <div>
63         <asp:Label ID="Label1" runat="server" Text="工号:"></asp:Label>
64         <input id="spNo" type="text" />
65     </div>
66     <div>
67         <asp:Label ID="Label2" runat="server" Text="姓名:"></asp:Label>
68         <input id="spName" type="text" />
69     </div>
70     <div>
71         <asp:Label ID="Label3" runat="server" Text="入职时间:"></asp:Label>
72         <input id="spTime" type="text" />
73     </div>
74     </form>
75 </body>
76 </html>

 

 

第34行中

aRequest.open("POST","sample.ashx?userid=" + userID,true);

 

 

sample.ashx 为“一般处理程序”文件,也是后台代码编写的地方,根据我的了解,这种文件系统会生成两个方法,不允许在添加任何方法,或是添加了也无效,有待验证,有比较清楚的大虾请指教,以下为该文件的全部代码:

这个方法是在创建文件时自动建立的,当我们在客户端通过

 1 using System;
 2 using System.Data;
 3 using System.Web;
 4 using System.Collections;
 5 using System.Web.Services;
 6 using System.Web.Services.Protocols;
 7
 8 namespace AjaxTest
 9 {
10     /// <summary>
11     /// $codebehindclassname$ 的摘要说明
12     /// </summary>
13     [WebService(Namespace = "http://tempuri.org/")]
14     [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
15     public class sample : IHttpHandler
16     {
17
18         public void ProcessRequest(HttpContext context)
19         {
20             context.Response.ContentType = "text/plain";
21             //用户ID,接收客户端传过来的参数
22             string userID = "";
23             //传回的字符串
24             string userInfo = "";
25             //读取客户端传过来的参数
26             if(!string.IsNullOrEmpty(HttpContext.Current.Request["userid"]))
27                 userID = HttpContext.Current.Request["userid"];
28
29             //通过客户端传来的参数获取后台数据,包括对数据库的操作后返回的数据集,在此就不累赘了
30             //获取后的数据可以以JSON或XML的格式封装后以string的形式传送到客户端
31             //如果数据简单就返回一个字符串,如下:
32             userInfo = "8080,张三,2008-07-01";
33             context.Response.Write(userInfo);
34         }
35
36         public bool IsReusable
37         {
38             get
39             {
40                 return false;
41             }
42         }
43     }
44 }

我们的代码只需要写在这个方法中

public void ProcessRequest(HttpContext context)

aRequest.open("POST","sample.ashx?userid=" + userID,true);

这个方法调用这个“一般处理程序”时,系统默认调用了该方法,所以我们的处理代码和返回值都在该方法完成,这样有一个不好的地方,就是每调用一次都必须新创建一个“一般处理程序”,可以想象在项目中如果经常用到这种方法那这种文件要创建很多个,这对应项目的管理是比较郁闷的;这个问题其实也是有解决的方法,ajax调用webservice便可以解决,通过调用制定的方法和制定的返回值来实现

返回方法:

context.Response.Write(userInfo);

通过该方法可以把string类型的userInfo变量传回客户端,客户端接收到该string类型的变量即可对其操作,客户端的接收代码如下:

jsUserInfo = aRequest.responseText;

时间: 2024-09-19 23:03:54

ajax异步调用数据实例的相关文章

原生ajax调用数据实例讲解_AJAX相关

由于jQuery的盛行,现在使用较多的是jQuery封装好了的ajax,因为解决了浏览器兼容性问题,这对程序员来说就等于去掉了一个心头大患,但并非原生ajax就销声匿迹,并且本人感觉还是对原生的ajax有所了解的好,下面就是一段ajax数据调用的实例代码,非常的简单,初学者可以参考一下.代码如下:一.兼容浏览器部分 function xmlHttpR() { var xmlhttp; if(window.XMLHttpRequest) { xmlhttp=new XMLHttpRequest()

Ajax异步提交数据返回值的换行问题实例分析_AJAX相关

本文实例分析了Ajax异步提交数据返回值的换行问题.分享给大家供大家参考,具体如下: 前面分析介绍了<Javascript基于AJAX回调函数传递参数>及<IE浏览器与FF浏览器关于Ajax传递参数值为中文时的区别>,学习了ajax回调函数传参与针对不同浏览器处理中文乱码问题的方法.这里就来分析一下ajax异步提交返回值中换行问题的处理技巧. 背景介绍: 需要实现的功能是:在下拉框中选择分类,提交到PHP根据选择的分类返回该分类下的成员名称,返回值各成员姓名以换行的形式显示到tex

原生ajax调用数据实例讲解

由于jQuery的盛行,现在使用较多的是jQuery封装好了的ajax,因为解决了浏览器兼容性问题,这对程序员来说就等于去掉了一个心头大患,但并非原生ajax就销声匿迹,并且本人感觉还是对原生的ajax有所了解的好,下面就是一段ajax数据调用的实例代码,非常的简单,初学者可以参考一下.代码如下: 一.兼容浏览器部分 function xmlHttpR() { var xmlhttp; if(window.XMLHttpRequest) { xmlhttp=new XMLHttpRequest(

Ajax异步提交数据返回值的换行问题实例分析

本文实例分析了Ajax异步提交数据返回值的换行问题.分享给大家供大家参考,具体如下: 前面分析介绍了<Javascript基于AJAX回调函数传递参数>及<IE浏览器与FF浏览器关于Ajax传递参数值为中文时的区别>,学习了ajax回调函数传参与针对不同浏览器处理中文乱码问题的方法.这里就来分析一下ajax异步提交返回值中换行问题的处理技巧. 背景介绍: 需要实现的功能是:在下拉框中选择分类,提交到PHP根据选择的分类返回该分类下的成员名称,返回值各成员姓名以换行的形式显示到tex

jQuery Ajax 全局调用封装实例代码详解_jquery

有一种情况:全站都要用异步方式来调用 数据,提交数据,那么你每次操作 都会要$.ajax({.....}) 写重复的方法 和代码,冗余太大, 也浪费时间,虽说你有代码自动提示补全,但真的不优雅,身为前端极客,是不能允许的! [嘿嘿!虽说我现在基本不用jquery了 ,不过异步概念 是永远要用的,就帮助下新人] jQuery Ajax通用js封装 第一步:引入jQuery库 <script type="text/javascript" src="/js/jquery.mi

Ajax异步请求技术实例讲解

AJAX的全称是Asynchronous JavaScript and XML(异步的 JavaScript 和 XML). AJAX不是新的编程语言,而是一种使用现有标准的新方法.ajax是与服务器交换数据并更新部分网页的艺术,在不重新加载整个页面的情况下. ajax是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术. ajax是一种用于创建快速动态网页的技术.通过在后台与服务器进行少量数据交换.ajax可以使网页实现异步更新.这意味着可以在不重新加载整个网页的情况下,对网页的某部分

ajax异步调用一般处理程序实现下载不弹出保存提示

问题描述 ajax异步调用一般处理程序实现下载不弹出保存提示 前端js代码: function QueryExcel() { var data = Ext.getCmp(""frmMain"").GetValues();// 获取json数据 Ext.Ajax.request({ url: '../Services/ReportExportHandler.ashx' // Webservice的地址以及方法名 jsonData: data method: 'POST

使用AJAX异步获取数据

ajax|数据|异步 [导读]本文给出一个例子(使用AJAX异步获取数据),介绍如何去使用AJAX. AJAX这个名字看起来很神奇,我第一次见到它也被它吸引了,它是Asynchronous JavaScript and XML的简写,异步的JAVASCRIPT和XML,关于AJAX的介绍在网上的介绍太多了,我就不多那么多了,我的口才不好,没他们说的那么精彩,可以去http://zh.wikipedia.org/wiki/AJAX 看看,在这里我只是给大家一个例子,了解如何去使用AJAX. AJA

Ajax异步调用框架

ajax|异步 /*   作者:welfred   时间:05年8月14日    作用:Ajax异步调用框架  */  var req;  // retrieve XML document (reusable generic function);  // parameter is URL string (relative or complete) to  // an .xml file whose Content-Type is a valid XML  // type, such as tex