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

旧城旧梦旧人归

旧城旧梦旧人归

2016-02-19 18:47

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

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
 
一个上下文对象
 

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

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

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

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

  处理类型

  返回一个复杂类型

  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);
}

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代理:

展开更多 50%)
分享

猜你喜欢

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

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

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

Web开发
AJAX.NET用户开发指南(5)

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

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

Web开发
AJAX.NET用户开发指南(4)

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

Web开发
AJAX.NET用户开发指南(2)

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

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

Web开发
AJAX.NET用户开发指南(1)

Ajax.Net快速入门

Web开发
Ajax.Net快速入门

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

蹲在墙角,默默想你,你是否也一样想我了昵?

蹲在墙角,默默想你,你是否也一样想我了昵?

AJAX加速Web应用

AJAX加速Web应用
下拉加载更多内容 ↓