一, JS访问WebServie(.Asmx)基础
1. 引用WebServie代理后,即可在输出HTML找到Type.registerNamespace('命名空间')开头的一段JS脚本,即为ScriptManager生成的客户端代理
代码段.
2. asp:ServiceReference的属性InlineScript="true"表示是否将代理缓存到页面中(HTML源码中)
3. Js函数中,arguments代表当前函数的参数集合对象;arguments.Length为参数总个数
二. JS访问PageMethod(.Aspx)基础
1. PageMethod方法服务器端限定:-只能在Aspx页面中定义-只能是公开静态方法 -使用WebMethod属性标记
-ScriptManager的EnablePageMethod属性为true,生成PageMethod代理
<asp:ScriptManager ID="ScriptManager1" runat="server" EnablePageMethods="true" />
客户端调用: PageMethods.方法名
小提示: 服务器到客户端传输日期型值是,实际传递的是(起始日期到现在的毫秒数和时区信息),在客户端Tostring()时,会自动进行时区转换.
二. Ajax错误处理
1. 调用时可以提供一个额外的错误回调函数,默认情况下不处理错误
这里的错误: 包括错误和服务器端抛出的异常
2. 超时时间属性只能在WebService(PageMethods)级别
3. Ajax客户端错误处理类 Sys.Net.WebServiceError
属性: timedout -是否超时; message -错误消息; ExceptionType 服务器端异常类型; stackTrace -产生异常的方法
4. Ajax客户端调用WebService错误处理
function getDivision(a, b) //
{
ErrorHandling.set_timeout(2000); //设置超时时间
ErrorHandling.GetDivision(a, b, null, failedCallback); //第四个参数为错误回调函数
}
function failedCallback(error)//错误回调函数
{
var message = String.format(
"Timeout: {0}\nMessage: {1}\nExceptionType: {2}\nStackTrace: {3}",
error.get_timedOut(),
error.get_message(),
error.get_exceptionType(),
error.get_stackTrace());
三. 复杂数据类型使用基础
1.公有属性和字段可被调用
注意事项: 窗口对象中,实现Ilist接口的对象与JS数组相对应;实现IDictionary接口的对象时,Key必须是String
alert(message);
}
例: 字典类型传递
服务器端:
[WebMethod]
public IDictionary<string, Employee> GetEmployees()
{
Dictionary<string, Employee> result = new Dictionary<string, Employee>();
Employee emp1 = new Employee();
emp1.FirstName = "Jeffrey";
emp1.LastName = "Zhao";
emp1.Salary = 1000;
result[emp1.FullName] = emp1;
Employee emp2 = new Employee();
emp2.FirstName = "Tom";
emp2.LastName = "Chen";
emp2.Salary = 2000;
result[emp2.FullName] = emp2;
return result;
}
客户端:
function getEmployees()
{
ComplexType.GetEmployees(getEmployeesSucceeded);
}
function getEmployeesSucceeded(result)
{
for (var name in result)
{
alert(name + ": " + result[name].Salary)
}
}
四. 客户端代理的使用细节
1. 函数调用完整签名 Invoke(arg1[,...argN][,成功时的回调函数][,错误时的回调函数,][,Invoke函数与回调函数之间需要传递的对象]);
2. 回调函数的完整签名 成功时回调函数名(返回结果[,Invoke函数与回调函数之间需要传递的对象][,调用的方法名]);
失败时回调函数名(返回结果[,Invoke函数与回调函数之间需要传递的对象][,调用的方法名]);
3. WebService级别默认属性
Timeout: 超时毫秒数;
defaultUserContext: Invoke函数与回调函数之间需要传递的对象;
defaultSecceededCallBack 成功时的回调函数名;
DefaultFailedCallBack 错误时的回调函数名.
指定以上默认后,Invoke不写这些参数时,就按默认指定调用函数.