AJAX.NET用户开发指南(3)

2016-02-19 18:47 3 1 收藏

下面,图老师小编带您去了解一下AJAX.NET用户开发指南(3),生活就是不断的发现新事物,get新技能~

【 tulaoshi.com - Web开发 】

Sample.ServerSideAdd(100,99, ServerSideAdd_CallBack);

function ServerSideAdd_CallBack(response){
 if (response.error != null){
  alert(response.error);
  return;
 }
 alert(response.value);
}

  从上面的代码中可以看出,我们为ServerSideAdd函数增加了一个额外参数ServerSideAdd_CallBack,这个参数就是用来处理服务器端响应的客户端函数。这个callback函数接受一个带有四个关键属性的response对象:

value
 
服务器端函数执行的返回值(可能是一个字符串、自定义对象或者dataset)

error
 
如果发生错误,则返回错误信息.

request
 
原始的xmlHttpRequest请求

context
 
一个上下文对象
 

  我们首先应该检查是否有错误发生,你可以通过在服务器端函数抛出异常来实现这个error属性。在上面这个例子中,我们简单的alert了一个值,就是value属性;request属性可以用来取得额外的信息(见下面的表格)

    如果你想了解更多的关于XmlHttpRequest的知识,可以查看下面的链接:http://www.quirksmode.org/blog/archives/2005/02/xmlhttp_linkdum.html

  处理类型

  返回一个复杂类型

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/webkaifa/)

  Ajax可以支持除了我们上面ServerSideAdd函数返回的Int值以外很多类型。他可以直接支持integers, strings, double, booleans, DateTime, DataSets 和 DataTables,也支持简单的自定义类型和数组。其他的类型通过其ToString方式来返回字符串。

  返回DataSet的工作就像真正的.net Dataset.给出一个返回DataSet的服务端函数,我们可以通过下面的方法在客户端显示:

<script language="JavaScript">

//Asynchronous call to the mythical "GetDataSet" server-side function

function getDataSet(){
 AjaxFunctions.GetDataSet(GetDataSet_callback);
}

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/webkaifa/)

function GetDataSet_callback(response){
var ds = response.value;
if(ds != null && typeof(ds) == "object" && ds.Tables != null){
var s = new Array();
s[s.length] = "<table border=1>";
for(var i=0; i<ds.Tables[0].Rows.length; i++){
s[s.length] = "<tr>";
s[s.length] = "<td>" + ds.Tables[0].Rows[i].FirstName + "</td>";
s[s.length] = "<td>" + ds.Tables[0].Rows[i].Birthday + "</td>";
s[s.length] = "</tr>";
}

s[s.length] = "</table>";
tableDisplay.innerHTML = s.join("");
}
else{
alert("Error. [3001] " + response.request.responseText);
}
}
</script>

  Ajax也可以支持自定义类,但是需要这个类是可以被序列化的。如下面的类:

[Serializable()]
public class User{
private int _userId;
private string _firstName;
private string _lastName;

public int userId{
get { return _userId; }
}

public string FirstName{
get { return _firstName; }
}

public string LastName{
get { return _lastName; }
}

public User(int _userId, string _firstName, string _lastName){
this._userId = _userId;
this._firstName = _firstName;
this._lastName = _lastName;
}

public User(){}

[AjaxMethod()]
public static User GetUser(int userId){
//Replace this with a DB hit or something :)
return new User(userId,"Michael", "Schwarz");
}
}

  我们需要通过调用RegisterTypeForAjax向服务器注册User代理:

来源:http://www.tulaoshi.com/n/20160219/1618959.html

延伸阅读
模型-视图-控制器(MVC)是80年代Smalltalk-80出现的一种软件设计模式,现在已经被广泛的使用。 1、模型(Model) 模型是应用程序的主体部分。模型表示业务数据,或者业务逻辑. 2、视图(View) 视图是应用程序中用户界面相关的部分,是用户看到并与之交互的界面。 3、控制器(...
标签: Java JAVA基础
依赖注入(Dependency Injection),又称作控制反转(IOC),本来是一种设计模式,现在被吵得热火朝天,有点过了。比较有名项目如String,picoContainer等。 在EJB3.0中,可以通过在字段和设置方法上加上注释注入依赖,我想在很快会有新的项目,或者在原来的项目的基础上,一些IOC容器会采用注释的方式注入依赖,JDK5.0加入的...
标签: Java JAVA基础
在EJB2.1的规范中需要实现ejbTimeout方法,当然还有ejbPassivate、ejbRemove等方法。在EJB3.0中,只有你想用它们的时候,你才必须创建它们,否则不必实现。 这个例子主要有5个文件,这个例子的Bean是一个无状态会话Bean: NewsTimer.java:业务接口。 NewsTimer.java:业务实现类。将来我们开发的EJB也都是这...
Struts是一个Web Framework。那么什么是Framework? !-- frame contents -- !-- /frame contents -- Framework概念并不是很新了,伴随着软件开发的发展,在多层的软件开发项目中,可重用、易扩展的,而且是经过良好测试的软件组件,越来越为人们所青睐。这意味着人们可以将充裕的时间用来分析、构建业务逻辑的应用上,而非...
标签: Java JAVA基础
在前面的例子中,我们每一个实体Bean只映射到数据库中的一张表上。事实上,一个实体Bean可以映射到多张表上。在一些需要字典表的项目上会经常用到,象以前我做过的项目,使用到很多国标规定的数据表。在我们下面这个例子中,性别作为一个字典表存在,学生这个实体将映射到学生信息表、性别表这两个表。 从表可以使用@Secon...

经验教程

627

收藏

75
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部