JavaScript中回调函数的使用
在JavaScript中,回调函数具体的定义为:函数A作为参数(函数引用)传递到另一个函数B中,并且这个函数B执行函数A。我们就说函数A叫做回调函数。如果没有名称(函数表达式),就叫做匿名回调函数。
在实际应用中,可以这么应用,一个方法进行获取数据源,另一个方法(回调函数)可以通过数据源在页面上进行展示,可以根据具体的需求进行展示就行,如果多个地方用到这个数据源,可以写不同的回调函数,将此函数传入这个方法中即可。
来,咱们通过实例可以一目了然
获取公司信息的小例子
1、获取公司信息数据源的方法(参数 url 为访问的地址,paramsObj为传递的参数对象,callback 为回调函数)
- function getList(url, paramsObj, callback) {
- $.ajax({
- type: "Post",
- url: url,
- dataType: "json",
- data: JSON.stringify({
- paramsObj: JSON.stringify(paramsObj)
- }),
- contentType: "application/json;charset-utf-8",
- success: function (data) {
- callback(data);
- }
- });
- }
2、后台调用数据的方法
- public class CompanyController : Controller
- {
- //
- // GET: /Company/
- public ActionResult Index()
- {
- return View();
- }
- [HttpPost]
- public ActionResult GetCompanyList(string paramsObj)
- {
- JavaScriptSerializer Serializer = new JavaScriptSerializer();
- var items = Serializer.Deserialize<Company>(paramsObj);
- List<Company> list = new List<Company>();
- list.Add(new Company { ID = , Name = "公司一" });
- list.Add(new Company { ID = , Name = "公司二" });
- list.Add(new Company { ID = , Name = "公司三" });
- return Json(list);
- }
- }
3、回调函数的方法,这里写了两个可以作为回调函数(一个用于将table展示到页面上,另一个以弹出框的形式展现)
- function buildHtml(data) {
- var strHtml = "";
- strHtml += "<table>";
- for (var i = 0; i < data.length; i++) {
- strHtml += "<tr>";
- strHtml += "<td>" + data[i].ID + "</td>";
- strHtml += "<td>" + data[i].Name + "</td>";
- strHtml += "</tr>";
- }
- strHtml += "</table>";
- $("#divTable").html(strHtml);
- }
- function alertHtml(data) {
- var strHtml = "";
- strHtml += "<table>";
- for (var i = 0; i < data.length; i++) {
- strHtml += "<tr>";
- strHtml += "<td>" + data[i].ID + "</td>";
- strHtml += "<td>" + data[i].Name + "</td>";
- strHtml += "</tr>";
- }
- strHtml += "</table>";
- alert(strHtml);
- }
4、页面调用
- $(document).ready(function () {
- //get();
- var url = "/Company/GetCompanyList";
- var paramsObj = { ID: 3, Name: "ck" };
- var com = new Company(33, "123456");
- com.GetCompany(url, paramsObj);
- });
- function Company(ID,Name)
- {
- this.ID = ID;
- this.Name = Name;
- }
- Company.prototype.GetCompany = function (url, paramsObj) {
- getList(url, paramsObj, buildHtml);
- getList(url, paramsObj, alertHtml);
- }
最后整理一下,页面全部代码如下:
- @{
- ViewBag.Title = "Index";
- }
- <script src="~/Scripts/jquery-1.8.2.min.js"></script>
- <script type="text/javascript">
- $(document).ready(function () {
- //get();
- var url = "/Company/GetCompanyList";
- var paramsObj = { ID: 3, Name: "ck" };
- var com = new Company(33, "123456");
- com.GetCompany(url, paramsObj);
- });
- function Company(ID,Name)
- {
- this.ID = ID;
- this.Name = Name;
- }
- Company.prototype.GetCompany = function (url, paramsObj) {
- getList(url, paramsObj, buildHtml);
- getList(url, paramsObj, alertHtml);
- }
- function getList(url, paramsObj, callback) {
- $.ajax({
- type: "Post",
- url: url,
- dataType: "json",
- data: JSON.stringify({
- paramsObj: JSON.stringify(paramsObj)
- }),
- contentType: "application/json;charset-utf-8",
- success: function (data) {
- callback(data);
- }
- });
- }
- function buildHtml(data) {
- var strHtml = "";
- strHtml += "<table>";
- for (var i = 0; i < data.length; i++) {
- strHtml += "<tr>";
- strHtml += "<td>" + data[i].ID + "</td>";
- strHtml += "<td>" + data[i].Name + "</td>";
- strHtml += "</tr>";
- }
- strHtml += "</table>";
- $("#divTable").html(strHtml);
- }
- function alertHtml(data) {
- var strHtml = "";
- strHtml += "<table>";
- for (var i = 0; i < data.length; i++) {
- strHtml += "<tr>";
- strHtml += "<td>" + data[i].ID + "</td>";
- strHtml += "<td>" + data[i].Name + "</td>";
- strHtml += "</tr>";
- }
- strHtml += "</table>";
- alert(strHtml);
- }
- </script>
- <h2>Index</h2>
- <div id="divTable" style="width:500px; height:300px;">
- </div>
JavaScript中回调函数的使用的更多相关文章
- Javascript中回调函数的学习笔记
function a_b(kkis){ document.body.style.background ='red'; kkis(); } function fli(){ alert('######## ...
- Javascript之回调函数(callback)
1.回调函数定义: 回调函数就是一个通过函数指针调用的函数.如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用为调用它所指向的函数时,我们就说这是回调函数.回调函数不是由该函数的实现方 ...
- 告诉你什么是javascript的回调函数
函数也是对象 想弄明白回调函数,首先的清楚地明白函数的规则.在javascript中,函数是比较奇怪的,但它确确实实是对象.确切地说,函数是用Function()构造函数创建的Function对象.F ...
- JavaScript Callback 回调函数
JavaScript callback回调函数 你到一个商店买东西,刚好你要的东西没有货,于是你在店员那里留下了你的电话,过了几天店里有货了,店员就打了你的电话,然后你接到电话后就到店里去取了货.在这 ...
- 深入理解JavaScript中的函数操作——《JavaScript忍者秘籍》总结
匿名函数 对于什么是匿名函数,这里就不做过多介绍了.我们需要知道的是,对于JavaScript而言,匿名函数是一个很重要且具有逻辑性的特性.通常,匿名函数的使用情况是:创建一个供以后使用的函数.简单的 ...
- javascript的回调函数
函数也是对象 想弄明白回调函数,首先的清楚地明白函数的规则.在javascript中,函数是比较奇怪的,但它确确实实是对象.确切地说,函数是用Function()构造函数创建的Function对象.F ...
- 如何理解JavaScript中的函数
转: 如何理解JavaScript中的函数 JS中的函数简介 JS中的函数是一种通过调用来完成具体业务的一段代码块.最核心的目的是将可重复执行的操作进行封装,然后供调用方无限制的调用. JS中的函数的 ...
- JavaScript正则表达式详解(二)JavaScript中正则表达式函数详解
二.JavaScript中正则表达式函数详解(exec, test, match, replace, search, split) 1.使用正则表达式的方法去匹配查找字符串 1.1. exec方法详解 ...
- $.getJSON('url',function(data){}) 中回调函数不执行
$.getJSON('url',function(data){}) 中回调函数不执行 url 中的 json 格式不正确 ,浏览器返回并没有报错 {'湖北':[114.11438,30.849429] ...
随机推荐
- System.Web.UI.ScriptManager.RegisterStartupScript(语句末尾加分号,不然可能会造成语句不执行)
System.Web.UI.ScriptManager.RegisterStartupScript(this.Page, this.GetType(), "testKey", &q ...
- Zuoye for guo
A B C D E A - 3 6 10 13 B - - 5 9 12 C - - - 10 13 D - - - - 9 E - ...
- UVa 272 Tex Quotes --- 水题
题目大意:在TeX中,左引号是 ``,右引号是 ''.输入一篇包含双引号的文章,你的任务是把他转成TeX的格式 解题思路:水题,定义一个变量标记是左引号还是右引号即可 /* UVa 272 Tex Q ...
- URAL 1205 By the Underground or by Foot?(SPFA)
By the Underground or by Foot? Time limit: 1.0 secondMemory limit: 64 MB Imagine yourself in a big c ...
- 课堂所讲整理:包装&工具类
package org.hanqi.array; import java.util.Random; public class BaoZhuang { public static void main(S ...
- HTML文件结构
转载(http://jingyan.baidu.com/article/75ab0bcbf04a75d6864db2fd.html) HTML文件结构 HTML文件均以<html>标记开始 ...
- /bin/rm: Argument list too long解決方法
rm.cp.mv是unix下面常用到的檔案處理指令,當我們需要刪除大量的log檔案,如果檔案數太多就會出現此訊息[/bin/rm: Argument list too long]解決方式如下: 例如要 ...
- 锁_rac环境kill锁表会话后出现killed状态(解决)
原创作品,出自 "深蓝的blog" 博客,深蓝的blog:http://blog.csdn.net/huangyanlong/article/details/46876961 ra ...
- Avoiding PostgreSQL database corruption
TL;DR: Don't ever set fsync=off, don't kill -9 the postmaster then deletepostmaster.pid, don't run P ...
- UIPageControl简单使用
1.添加一个UIPageControl到view中 -(void)addPageControl { UIPageControl* page=[[UIPageControl alloc]init]; p ...