Web开发——前后台异步调用
做web开发,最头疼的、最核心的部分或许就应该是前后台交互了,之前一直没弄明白,每次都不知道该如何去做。最近由于开发需要,加上有些朋友问起这个问题,不得不再次摸索前后台交互的方法。功夫不负有心人,总算是成功了。
问题描述:如下图,如何在前台根据红色框内选择的下拉框内容,从后台读数据库的内容显示在蓝色框内???

解决方法:
(1)前台:
页面有一个select选择框和text文本框。注意select有个onchange事件,这个就是为了响应用户在前台做的操作。
<select id="Select1" name="D1" runat="server" onchange="return datachange()"></select>
<input id="Text1" type="text" />
响应事件具体实现如下代码,在该响应事件datachange()中,首先获取用户所选择的下拉框内的值,将该值传到后台进行相应处理。
<%=sCallBackFunctionInvocation%> 就是异步调用的入口。
showMsg(arg)函数arg用于接收经过后台处理之后返回到前台的数据,这里只是将后台返回来的数据显示在文本框内。
<script language="javascript" type="text/javascript">
function datachange(){
var message = document.getElementById("Select1").value;
<%=sCallBackFunctionInvocation%>
}
function showMsg(arg)
{
document.getElementById("Text1").value = arg;
}
</script>
OK,前台就轻易搞定了。
(2)后台
首先贴代码~~
public partial class _Default : System.Web.UI.Page, System.Web.UI.ICallbackEventHandler
{
public string sCallBackFunctionInvocation;
public string strResult = "";
protected void Page_Load(object sender, EventArgs e)
{
Select1.Items.Add("aa");
Select1.Items.Add("bb");
Select1.Items.Add("cc"); sCallBackFunctionInvocation = Page.ClientScript.GetCallbackEventReference(this, "message", "showMsg", "");
}
public void RaiseCallbackEvent(string arg)
{
if (arg == "aa")
{
//执行相应的函数或语句
strResult = arg + "——来自后台哦11";
}
else if (arg == "bb")
{
//执行相应的函数或语句
strResult = arg + "——来自后台哦22";
}
else if (arg == "cc")
{
//执行相应的函数或语句
strResult = arg + "——来自后台哦33";
}
}
public string GetCallbackResult()
{
return strResult;
}
}
从上述代码中,首先需要继承System.Web.UI.ICallbackEventHandler,不然之后在运行时会报如下的错误: 
再次,需要在Page_Load()函数中进行客户端函数注册。Page.ClientScriptManager.GetCallbackEventReference (Control, String(argument), String(clientCallback), String(context)) 获取一个对客户端函数的引用;调用该函数时,将启动一个对服务器端事件的客户端回调。此重载方法的客户端函数包含指定的控件、参数、客户端脚本和上下文。
第三,在RaiseCallbackEvent(string arg)函数中,arg是从前台传过来的值,即select下拉框中选择的值。在该函数中,开发者可以根据前台传过来的值,进行相应的操作,处理结果由strResult存储。(本来打算读取数据库中的内容,但是本篇博文主要是探讨前后台的交互,就使用最简单的语句进行代替了)。
第四,string GetCallbackResult()函数主要是为了处理回发到客户端的结果,即strResult。来几张结果图~


至此,一个简单却能实现强大功能的web前后台数据调用就实现了,只要弄懂了这个处理机制,就觉得非常简单,是不是?!O(∩_∩)O
Web开发——前后台异步调用的更多相关文章
- day5 liaoxuefeng---访问数据库、web开发、异步IO
一.访问数据库 二.web开发 三.异步IO
- MacOS和iOS开发中异步调用与多线程的区别
很多童鞋可能对Apple开发中的异步调用和多线程的区别不是太清楚,这里本猫将用一些简单的示例来展示一下它们到底直观上有神马不同. 首先异步调用可以在同一个线程中,也可以在多个不同的线程中.每个线程都有 ...
- SpringBoot:异步开发之异步调用
前言 除了异步请求,一般上我们用的比较多的应该是异步调用.通常在开发过程中,会遇到一个方法是和实际业务无关的,没有紧密性的.比如记录日志信息等业务.这个时候正常就是启一个新线程去做一些业务处理,让主线 ...
- SpringBoot | 第二十一章:异步开发之异步调用
前言 上一章节,我们知道了如何进行异步请求的处理.除了异步请求,一般上我们用的比较多的应该是异步调用.通常在开发过程中,会遇到一个方法是和实际业务无关的,没有紧密性的.比如记录日志信息等业务.这个时候 ...
- 007-优化web请求三-异步调用【WebAsyncTask】
一.什么是同步调用 浏览器发起请求,Web服务器开一个线程处理,处理完把处理结果返回浏览器.好像没什么好说的了,绝大多数Web服务器都如此般处理.现在想想如果处理的过程中需要调用后端的一个业务逻辑服务 ...
- Excel催化剂开源第8波-VSTO开发之异步调用方法
在VSTO开发过程中,因其和普通的Winform开发有点差别,具体细节笔者也说不清楚,大概是VSTO的插件是寄生在Excel中,不属于独立的进程之类的,其异步方法调用时,未能如Winform那样直接用 ...
- SpringBoot学习笔记(十七:异步调用)
@ 目录 1.@EnableAsync 2.@Async 2.1.无返回值的异步方法 2.1.有返回值的异步方法 3. Executor 3.1.方法级别重写Executor 3.2.应用级别重写Ex ...
- Windows 8 应用开发 - 异步调用
原文:Windows 8 应用开发 - 异步调用 不论是桌面客户端还是Web应用通常会出现处理时间较长的操作,为了在这段时间内不影响用户与应用之间的交互体验,开发人员通常会使用异步调用技术,使 ...
- 用Html5/CSS3做Winform,一步一步教你搭建CefSharp开发环境(附JavaScript异步调用C#例子,及全部源代码)上
本文为鸡毛巾原创,原文地址:http://www.cnblogs.com/jimaojin/p/7077131.html,转载请注明 CefSharp说白了就是Chromium浏览器的嵌入式核心,我们 ...
随机推荐
- Ubuntu16.04安装openBLAS
基本步骤: git clone git://github.com/xianyi/OpenBLAS cd OpenBLAS sudo apt-get install gfortran sudo make ...
- PAT天梯赛L3-015 球队食物链
读题可以知道是DFS,注意一点,题目说的是赢过,所以str[i][j]=‘W',那么g[i][j]=1,str[i][j]='L',g[j][i]=1 然后就常规搜索即可,还有一点就是剪枝,如果没有可 ...
- shell-001:记录每天的磁盘情况
# shell-100只是为了练习!!适合新手! #!/bin/bash # 此脚本是记录每天的磁盘情况,记录保存30天! # 当前的日期 current_time=$(date +%F) # 保存的 ...
- MVC5 + EF6 入门完整教程1
https://www.cnblogs.com/miro/p/4030622.html 第0课 从0开始 ASP.NET MVC开发模式和传统的WebForm开发模式相比,增加了很多"约定& ...
- BZOJ - 2115 独立回路 线性基
题意:给定一个图集\((V,E)\),求路径\(1...n\)的最大异或和,其中重复经过的部分也会重复异或 所求既任意一条\(1...n\)的路径的异或和,再异或上任意独立回路的组合的异或和(仔细想想 ...
- HDU1501 简单DP
dp[i][j]:用A的前i的字符和B的前j个字符能否组成i+j长度的合法C串 O(n^2)的方法有点糟糕 /*H E A D*/ char str1[maxn],str2[maxn],str3[ma ...
- C# 通用区间类
public class Zone<T> where T : IComparable<T> { /// <summary> /// .ctor /// </s ...
- 3---Django rest framework源码分析(3)----节流
Django rest framework源码分析(3)----节流 目录 添加节流 自定义节流的方法 限制60s内只能访问3次 (1)API文件夹下面新建throttle.py,代码如下: # u ...
- GraphQL 暂停
别人的文章 http://blog.csdn.net/imwebteam/article/details/53888708 Java 文档都打不开,已经在GitHub上提了 in README.md ...
- IDEA 14.0 (默认模式) 快捷键
IDEA 14.0 (默认模式) 快捷键 1.Alt+Shift+R:重命名变量名.类名.方法名(使用已经使用过的) 2.Ctrl+O :重写方法 3.Alt+Shift+P :实现接口 4.Alt+ ...