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] ...
随机推荐
- POJ 2253 Frogger
题目链接:http://poj.org/problem?id=2253 Frogger Time Limit: 1000MS Memory Limit: 65536K Total Submissi ...
- 我对CSS vertical-align的一些理解与认识(一)
一.关于今天,本文,及其他 今天是个特殊的日子,因为今天是汶川地震两周年的日子,我很悲鸣:今天又是国际护士节,看到微博上护士照横流,我很欣慰. 一段放松的YY后,进入正题.上个月21号,有位同行留言想 ...
- html5中新的标准属性
属性 值 描述accesskey ...
- 字符串p型编码
总时间限制: 1000ms 内存限制: 65536kB 描述 给定一个完全由数字字符('0','1','2',-,'9')构成的字符串str,请写出str的p型编码串.例如:字符串12234411 ...
- 水灾(sliker.cpp/c/pas) 1000MS 64MB
大雨应经下了几天雨,却还是没有停的样子.土豪CCY刚从外地赚完1e元回来,知道不久除了自己别墅,其他的地方都将会被洪水淹没. CCY所在的城市可以用一个N*M(N,M<=50)的地图表示,地图上 ...
- HDU 2085 核反应堆 --- 简单递推
HDU 2085 核反应堆 /* HDU 2085 核反应堆 --- 简单递推 */ #include <cstdio> ; long long a[N], b[N]; //a表示高能质点 ...
- 【NOIP2013】火柴排队
如果没有这道题的话我连逆序对是啥都不知道QAQ 原题: 涵涵有两盒火柴,每盒装有 n 根火柴,每根火柴都有一个高度.现在将每盒中的火柴各自排成一列,同一列火柴的高度互不相同,两列火柴之间的距离定义为: ...
- kuangbin_ShortPath F (POJ 3259)
判环模板题 有了上一题的经验过得很轻松 除了因为spfa还不是很熟打错了两个字母 然后debug了一小会 #include <iostream> #include <string&g ...
- datagrid combobox事件更新编辑状态下的datagrid行
请问如何从上图状态 点击下拉的combobox中值然后在不取消datagrid编辑状态下更新这一行另一列的数据,达到下图这样的效果: 非常感谢! 给你的combobox 绑定一个onSelect 事 ...
- 1分钟去除word文档编辑限制密码
http://blog.sina.com.cn/s/blog_4bd446f30101dc4t.html