ajax中Sys.WebForms.PageRequestManager的事件激发顺序

测试代码:

[c-sharp] view plaincopyprint?

  1. 测试代码如下:
  2. <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Test.aspx.cs" Inherits="AjaxCtpWebDemo.Test" %>
  3. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  4. <html xmlns="http://www.w3.org/1999/xhtml" >
  5. <head runat="server">
  6. <title>无标题页</title>
  7. </head>
  8. <body>
  9. <form id="form1" runat="server">
  10. <asp:ScriptManager ID="ScriptManager1" runat="server">
  11. </asp:ScriptManager>
  12. <%=DateTime.Now.ToString() %><hr/>
  13. <asp:UpdatePanel ID="UpdatePanel1" runat="server">
  14. <ContentTemplate>
  15. <%=DateTime.Now.ToString() %>
  16. <hr/>
  17. <asp:Button ID="Button1" runat="server" Text="Button" />
  18. </ContentTemplate>
  19. </asp:UpdatePanel>
  20. <mce:script  type="text/javascript" language="javascript"><!--
  21. Sys.WebForms.PageRequestManager.getInstance().add_initializeRequest(
  22. function(sender, e)
  23. {
  24. alert("add_initializeRequest");
  25. }
  26. );
  27. Sys.WebForms.PageRequestManager.getInstance().add_endRequest(
  28. function(sender,e){
  29. alert("add_endRequest");
  30. }
  31. );
  32. Sys.WebForms.PageRequestManager.getInstance().add_beginRequest(
  33. function(sender,e){
  34. alert("add_beginRequest");
  35. }
  36. );
  37. Sys.WebForms.PageRequestManager.getInstance().add_pageLoaded(
  38. function(sender,e){
  39. alert("add_pageLoaded");
  40. }
  41. );
  42. Sys.WebForms.PageRequestManager.getInstance().add_pageLoading(
  43. function(sender,e){
  44. alert("add_pageLoading");
  45. }
  46. );
  47. // --></mce:script>
  48. </form>
  49. </body>
  50. </html>

测试代码如下:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Test.aspx.cs" Inherits="AjaxCtpWebDemo.Test" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>无标题页</title>
</head>
<body>
<form id="form1" runat="server">

<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
<%=DateTime.Now.ToString() %><hr/>
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<%=DateTime.Now.ToString() %>
<hr/>
<asp:Button ID="Button1" runat="server" Text="Button" />
</ContentTemplate>
</asp:UpdatePanel>
<mce:script type="text/javascript" language="javascript"><!--
Sys.WebForms.PageRequestManager.getInstance().add_initializeRequest(
function(sender, e)
{
alert("add_initializeRequest");
}
);

Sys.WebForms.PageRequestManager.getInstance().add_endRequest(
function(sender,e){
alert("add_endRequest");
}
);

Sys.WebForms.PageRequestManager.getInstance().add_beginRequest(
function(sender,e){
alert("add_beginRequest");
}
);

Sys.WebForms.PageRequestManager.getInstance().add_pageLoaded(
function(sender,e){
alert("add_pageLoaded");
}
);

Sys.WebForms.PageRequestManager.getInstance().add_pageLoading(
function(sender,e){
alert("add_pageLoading");
}
);

// --></mce:script>

</form>
</body>
</html>

最终结果如下:

1.页面第一次进入时,会首先激发add_pageLoaded事件

2.异步提交时,事件的激发顺序如下:

add_initializeRequest

add_beginRequest

add_pageLoading

add_pageLoaded

add_endRequest

add_pageLoaded

转:http://www.cnblogs.com/fifastar/archive/2008/06/02/1212225.html

获取PageRequestManager的实例:var prm = Sys.WebForms.PageRequestManager.getInstance(); 属性prm.get_isInAsyncPostBack():判断一个异步回送是否正在进行中

方法prm.abortPostBack():把一个正在执行中的异步回送取消。

客户端页面的生命周期

1、initializeRequest: 触发时机:当一个异步请求的回送被初始化之前引发。        添加事件处理代码:Sys.WebForms.PageRequestManager.getInstance().add_initializeRequest(initFunc);        移除事件处理代码:Sys.WebForms.PageRequestManager.getInstance().remove_initializeRequest(initFunc);            initFunc是该页面初始化之前要执行的客户端方法。该方法的声明为:            function initFunc(sender,args)            {                 //args的数据类型是:InitializeRequestEventArgs类型。                 //args.get_postBackElement():取得初始化异步回送的元素对象。                    //args.get_postBackElement().id取得初始化异步回送的元素对象的id号                    //args.get_postBackElement().value取得初始化异步回送的元素对象的value值                 //args.set_cancel(bool):取消初始化异步回送,即丢弃该异步回送。            }         如果异步处理的过程比较慢,在异步处理的过程中再次发出同样的请求的话,那后者的异步处理请求会取消掉前一步未处理完的请求。  这就是默认的异步请求优先级--“后者优先”。         我们通常回利用initailizeRequest事件来取消一个异步回送(正在进行的回送和将要初始化的回送)。

[c-sharp] view plaincopyprint?

  1. <asp:ScriptManager ID="ScriptManager1" runat="server" />
  2. <asp:UpdateProgress ID="UpdateProgress1" runat="server" DisplayAfter="0" DynamicLayout="false">
  3. <ProgressTemplate>
  4. <span style="color: Red" mce_style="color: Red">Loading...</span>
  5. </ProgressTemplate>
  6. </asp:UpdateProgress>
  7. <asp:UpdatePanel ID="UpdatePanel1" runat="server">
  8. <ContentTemplate>
  9. <%=DateTime.Now %><br />
  10. <asp:Label ID="Label1" runat="server" Text=""></asp:Label><br />
  11. <asp:Button ID="btnPrecedence" runat="server" Text="优先" OnClick="btnPrecedence_Click" />
  12. <asp:Button ID="Button2" runat="server" Text="普通" OnClick="btnPrecedence_Click" />
  13. </ContentTemplate>
  14. </asp:UpdatePanel>
  15. <div id="Message" style="color: Red" mce_style="color: Red">
  16. </div>
  17. <mce:script type="text/javascript" language="javascript"><!--
  18. var lastPostBackButtonId=null;          //上一次事件 控件ID
  19. var btnPrecedenceId = "<%=this.btnPrecedence.ClientID %>"   //优先级高的控件ID
  20. Sys.WebForms.PageRequestManager.getInstance().add_initializeRequest(
  21. function(sender,e)
  22. {
  23. //定义一个全局PageRequestManager实例赋值给变量 prm
  24. var prm = Sys.WebForms.PageRequestManager.getInstance();
  25. //是否已有异步刷新
  26. if(prm.get_isInAsyncPostBack())
  27. {
  28. if(lastPostBackButtonId==btnPrecedenceId)       //上次跟本次都是点击优先按钮
  29. {
  30. e.set_cancel(true);//取消异步更新
  31. if(e.get_postBackElement().id==btnPrecedenceId)
  32. {
  33. showMessage("不可重复发起优先的刷新1。");
  34. }else
  35. {
  36. showMessage("请等待优先的刷新结束2。");
  37. }
  38. return;
  39. }
  40. else if(e.get_postBackElement().id==btnPrecedenceId) //本次点击是优先按钮,但上次却不是优先按钮
  41. {
  42. showMessage("发起优先的刷新,普通的刷新将被取消3。");
  43. }
  44. else //本次点击不是优先按钮,上次点击也不是优先按钮
  45. {
  46. showMessage("重新发起普通刷新,前一次将被取消4。");
  47. }
  48. }
  49. lastPostBackButtonId = e.get_postBackElement().id;
  50. }
  51. );
  52. // --></mce:script>
  53. <mce:script type="text/javascript" language="javascript"><!--
  54. var timeoutSeed = null;
  55. function showMessage(message,timeout)
  56. {
  57. $get("Message").innerHTML = message;
  58. //连续发送请求,把前一个清楚掉
  59. if(timeoutSeed)
  60. {
  61. window.clearTimeout(timeoutSeed);
  62. }
  63. timeoutSeed = window.setTimeout(function(){$get("message").innerHTML="";
  64. },timeout||2500)
  65. }
  66. // --></mce:script>

<asp:ScriptManager ID="ScriptManager1" runat="server" />
<asp:UpdateProgress ID="UpdateProgress1" runat="server" DisplayAfter="0" DynamicLayout="false">
<ProgressTemplate>
<span style="color: Red" mce_style="color: Red">Loading...</span>
</ProgressTemplate>
</asp:UpdateProgress>
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<%=DateTime.Now %><br />
<asp:Label ID="Label1" runat="server" Text=""></asp:Label><br />
<asp:Button ID="btnPrecedence" runat="server" Text="优先" OnClick="btnPrecedence_Click" />
<asp:Button ID="Button2" runat="server" Text="普通" OnClick="btnPrecedence_Click" />
</ContentTemplate>
</asp:UpdatePanel>
<div id="Message" style="color: Red" mce_style="color: Red">
</div>

<mce:script type="text/javascript" language="javascript"><!--
var lastPostBackButtonId=null; //上一次事件 控件ID
var btnPrecedenceId = "<%=this.btnPrecedence.ClientID %>" //优先级高的控件ID

Sys.WebForms.PageRequestManager.getInstance().add_initializeRequest(
function(sender,e)
{
//定义一个全局PageRequestManager实例赋值给变量 prm
var prm = Sys.WebForms.PageRequestManager.getInstance();
//是否已有异步刷新
if(prm.get_isInAsyncPostBack())
{
if(lastPostBackButtonId==btnPrecedenceId) //上次跟本次都是点击优先按钮
{
e.set_cancel(true);//取消异步更新
if(e.get_postBackElement().id==btnPrecedenceId)
{
showMessage("不可重复发起优先的刷新1。");
}else
{
showMessage("请等待优先的刷新结束2。");
}
return;
}
else if(e.get_postBackElement().id==btnPrecedenceId) //本次点击是优先按钮,但上次却不是优先按钮
{
showMessage("发起优先的刷新,普通的刷新将被取消3。");
}
else //本次点击不是优先按钮,上次点击也不是优先按钮
{
showMessage("重新发起普通刷新,前一次将被取消4。");
}
}
lastPostBackButtonId = e.get_postBackElement().id;
}
);

// --></mce:script>

<mce:script type="text/javascript" language="javascript"><!--
var timeoutSeed = null;
function showMessage(message,timeout)
{
$get("Message").innerHTML = message;
//连续发送请求,把前一个清楚掉
if(timeoutSeed)
{
window.clearTimeout(timeoutSeed);
}
timeoutSeed = window.setTimeout(function(){$get("message").innerHTML="";
},timeout||2500)
}

// --></mce:script>

[c-sharp] view plaincopyprint?

  1. protected void Page_Load(object sender, EventArgs e)
  2. {
  3. }
  4. protected void btnPrecedence_Click(object sender, EventArgs e)
  5. {
  6. Thread.Sleep(3000);
  7. Button button = sender as Button;
  8. Label1.Text = String.Format("您点击了“{0}”按钮", button.Text);
  9. }

protected void Page_Load(object sender, EventArgs e)
{

}
protected void btnPrecedence_Click(object sender, EventArgs e)
{
Thread.Sleep(3000);
Button button = sender as Button;
Label1.Text = String.Format("您点击了“{0}”按钮", button.Text);
}

2、beginRequest:        触发时机:在异步请求初始化完成,且向服务器提出请求之前引发。        添加事件处理代码:Sys.WebForms.PageRequestManager.getInstance().add_beginRequest(beginFunc);        移除事件处理代码:Sys.WebForms.PageRequestManager.getInstance().remove_beginRequest(beginFunc);            beginFunc是向服务器提出请求之前要执行的客户端方法。该方法的声明为:            function beginFunc(sender,args)            {                 //args的数据类型是:BeginRequestEventArgs类型。                 //args.get_postBackElement():取得初始化异步回送的元素对象。            }         我们通常在beginRequest事件中设置一个标头,或是启始化一个动化告知用户正在进行请求处理。

[c-sharp] view plaincopyprint?

  1. <asp:UpdatePanel ID="UpdatePanel1" runat="server">
  2. <ContentTemplate>
  3. <%=DateTime.Now %><br />
  4. <asp:Button ID="Button1" runat="server" Text="Button1" OnClick="Button_Click" />
  5. </ContentTemplate>
  6. <Triggers>
  7. <asp:AsyncPostBackTrigger ControlID="Button2" />
  8. </Triggers>
  9. </asp:UpdatePanel>
  10. <asp:UpdateProgress ID="UpdateProgress1" runat="server" DisplayAfter="0" AssociatedUpdatePanelID="UpdatePanel1">
  11. <ProgressTemplate>
  12. <span style="color: Red" mce_style="color: Red">Loading...</span>
  13. </ProgressTemplate>
  14. </asp:UpdateProgress>
  15. <hr />
  16. <asp:Button ID="Button2" runat="server" Text="Button2" OnClick="Button_Click" />
  17. <mce:script type="text/javascript" language="javascript"><!--
  18. Sys.WebForms.PageRequestManager.getInstance().add_beginRequest(
  19. function(sender,e)
  20. {
  21. if(e.get_postBackElement().id != "<%=this.Button2.ClientID %>")
  22. {
  23. return;
  24. }
  25. var updateProgress = $get("<%=this.UpdateProgress1.ClientID %>");
  26. var dynamicLayout = <%=this.UpdateProgress1.DynamicLayout.ToString().ToLower() %>;
  27. if(dynamicLayout)
  28. {
  29. updateProgress.style.display = "block";
  30. }else
  31. {
  32. updateProgress.style.visibility = "visible";
  33. }
  34. }
  35. )
  36. // --></mce:script>

<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<%=DateTime.Now %><br />
<asp:Button ID="Button1" runat="server" Text="Button1" OnClick="Button_Click" />
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="Button2" />
</Triggers>
</asp:UpdatePanel>
<asp:UpdateProgress ID="UpdateProgress1" runat="server" DisplayAfter="0" AssociatedUpdatePanelID="UpdatePanel1">
<ProgressTemplate>
<span style="color: Red" mce_style="color: Red">Loading...</span>
</ProgressTemplate>
</asp:UpdateProgress>
<hr />
<asp:Button ID="Button2" runat="server" Text="Button2" OnClick="Button_Click" />

<mce:script type="text/javascript" language="javascript"><!--
Sys.WebForms.PageRequestManager.getInstance().add_beginRequest(
function(sender,e)
{
if(e.get_postBackElement().id != "<%=this.Button2.ClientID %>")
{
return;
}

var updateProgress = $get("<%=this.UpdateProgress1.ClientID %>");
var dynamicLayout = <%=this.UpdateProgress1.DynamicLayout.ToString().ToLower() %>;
if(dynamicLayout)
{
updateProgress.style.display = "block";
}else
{
updateProgress.style.visibility = "visible";
}
}
)

// --></mce:script>

[c-sharp] view plaincopyprint?

  1. protected void Page_Load(object sender, EventArgs e)
  2. {
  3. }
  4. protected void Button_Click(object sender, EventArgs e)
  5. {
  6. Thread.Sleep(2000);
  7. }

protected void Page_Load(object sender, EventArgs e)
{

}
protected void Button_Click(object sender, EventArgs e)
{
Thread.Sleep(2000);
}

3、pageLoading:         触发时机:异步回送已经被服务器接收并响应,但还没有对页面进行任何更新之前引发         添加事件处理代码:Sys.WebForms.PageRequestManager.getInstance().add_pageLoading(loadingFunc);         移除事件处理代码:Sys.WebForms.PageRequestManager.getInstance().remove_pageLoading(loadingFunc);              loadingFunc是页面更新之前要执行的客户端方法。该方法的声明为:              function loadingFunc(sender,args)              {                 //args的数据类型是:PageLoadingEventArgs类型。                 //args代表内容将要被更新或删除的UpdatePanel控件的<div>。                 //var arr = args.get_panelsDeleting(); 取得将被删除的各个UpdatePanel控件的<div>                 //var arr = args.get_panelsUpdating();取得将被更新的各个UpdatePanel控件的<div>              }

5、endRequest:        触发时机:回送请求处理完毕后,就会引发endRequest事件。        添加事件处理代码:Sys.WebForms.PageRequestManager.getInstance().add_endRequest(endFunc);        移除事件处理代码:Sys.WebForms.PageRequestManager.getInstance().remove_endRequest(endFunc);            endFunc是页面请求完成后执行的客户端方法。该方法的声明为:            function endRequest(sender,args)            {                 //args的数据类型是:EndRequestEventArgs类型                 //var err = args.get_error():判断是否发生错误,并取得错误对象。                 //var em = args.get_error().message:取得错误的出错信息。                 //args.set_errorHandled(true):设置错误已被处理。                 //var gm = args.get_errorHandled():判断错误是否被处理。                 //异步请求发生异常后,如果程序员不在客户端捕获处理的话,PageRequestManager对象会将其以对话框的形式弹出异常的信息。如果程序员想自己编写错误处理代码,而不交由PageRequestManager对象处理的话。那程序员可以通过args.get_error().message属性取得错误信息,然后编写异常处理代码,最后记得执行args.set_errorHandled(true)。这样就阻止异常继续回返给PageRequestManager对象。具体使用在后面将详细说明。            }

[c-sharp] view plaincopyprint?

  1. <asp:UpdatePanel ID="UpdatePanel1" runat="server">
  2. <ContentTemplate>
  3. <%=DateTime.Now %><br />
  4. <asp:Button ID="btnError" runat="server" Text="Error" OnClick="btnError_Click" />
  5. <asp:Button ID="btnTimeout" runat="server" Text="Timeout" OnClick="btnTimeout_Click" />
  6. <input id="button" type="button" value="Abort" onclick="Sys.WebForms.PageRequestManager.getInstance().abortPostBack();" />
  7. <asp:Button ID="btnDataItem" runat="server" Text="Reister DataItem" OnClick="btnDataItem_Click" />
  8. </ContentTemplate>
  9. </asp:UpdatePanel>
  10. <mce:script type="text/javascript"><!--
  11. Sys.WebForms.PageRequestManager.getInstance().add_endRequest(
  12. function(sender,e){
  13. if(e.get_error())
  14. {
  15. e.set_errorHandled(true);
  16. if(e.get_response().get_timedOut())
  17. {
  18. showMessage("您的请求已超时。")
  19. }else if(e.get_response().get_statusCode() != 200)
  20. {
  21. showMessage("遇到未知错误。");
  22. }else
  23. {
  24. showMessage(e.get_error().message);
  25. }
  26. }else if(e.get_response().get_aborted())
  27. {
  28. showMessage(‘您的请求已取消‘)
  29. }
  30. else
  31. {
  32. var upId = "<%= this.UpdatePanel1.ClientID %>";
  33. var item =e.get_dataItems()[upId];
  34. showMessage("您注册了:"+item);
  35. }
  36. });
  37. // --></mce:script>

<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<%=DateTime.Now %><br />
<asp:Button ID="btnError" runat="server" Text="Error" OnClick="btnError_Click" />
<asp:Button ID="btnTimeout" runat="server" Text="Timeout" OnClick="btnTimeout_Click" />
<input id="button" type="button" value="Abort" onclick="Sys.WebForms.PageRequestManager.getInstance().abortPostBack();" />
<asp:Button ID="btnDataItem" runat="server" Text="Reister DataItem" OnClick="btnDataItem_Click" />
</ContentTemplate>
</asp:UpdatePanel>

<mce:script type="text/javascript"><!--
Sys.WebForms.PageRequestManager.getInstance().add_endRequest(
function(sender,e){
if(e.get_error())
{
e.set_errorHandled(true);

if(e.get_response().get_timedOut())
{
showMessage("您的请求已超时。")
}else if(e.get_response().get_statusCode() != 200)
{
showMessage("遇到未知错误。");
}else
{
showMessage(e.get_error().message);
}
}else if(e.get_response().get_aborted())
{
showMessage(‘您的请求已取消‘)
}
else
{
var upId = "<%= this.UpdatePanel1.ClientID %>";
var item =e.get_dataItems()[upId];
showMessage("您注册了:"+item);
}
});

// --></mce:script>

[c-sharp] view plaincopyprint?

  1. protected void Page_Load(object sender, EventArgs e)
  2. {
  3. ScriptManager.GetCurrent(Page).AsyncPostBackTimeout = 3;
  4. }
  5. protected void btnError_Click(object sender, EventArgs e)
  6. {
  7. int two = 2;
  8. int i = 3 / (two - 2);
  9. }
  10. protected void btnTimeout_Click(object sender, EventArgs e)
  11. {
  12. Thread.Sleep(5000);
  13. }
  14. protected void btnDataItem_Click(object sender, EventArgs e)
  15. {
  16. ScriptManager.GetCurrent(this).RegisterDataItem(UpdatePanel1, DateTime.Now.ToString());
  17. }

protected void Page_Load(object sender, EventArgs e)
{
ScriptManager.GetCurrent(Page).AsyncPostBackTimeout = 3;
}
protected void btnError_Click(object sender, EventArgs e)
{
int two = 2;
int i = 3 / (two - 2);
}
protected void btnTimeout_Click(object sender, EventArgs e)
{
Thread.Sleep(5000);
}
protected void btnDataItem_Click(object sender, EventArgs e)
{
ScriptManager.GetCurrent(this).RegisterDataItem(UpdatePanel1, DateTime.Now.ToString());
}

4、pageLoaded:         触发时机:回送完成页面区域被更新之后引发。         添加事件处理代码:Sys.WebForms.PageRequestManager.getInstance().add_pageLoaded(loadedFunc);         移除事件处理代码:Sys.WebForms.PageRequestManager.getInstance().remove_pageLoaded(loadedFunc);            loadedFunc是页面更新后要执行的客户端方法。该方法的声明为:            function loadedFunc(sender,args)            {                 //args的数据类型是:PageLoadedEventArgs类型                 //args代表更新的或创建的UpdatePanel控件的<div>                 //var arr = args.get_panelsUpdated();取得被更新的各个UpdatePanel控件的<div>                 //var arr = args.get_panelsCreated();取得新创建的各个UpdatePanel控件的<div>            }

时间: 2024-12-25 10:40:30

ajax中Sys.WebForms.PageRequestManager的事件激发顺序的相关文章

AJAX 中Sys.WebForms.PageRequestManager的事件激发顺序

测试代码: [c-sharp] view plaincopy 测试代码如下: <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Test.aspx.cs" Inherits="AjaxCtpWebDemo.Test" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitiona

AJAX 中Sys.WebForms.PageRequestManager的事件激发顺序 《转》

AJAX 中Sys.WebForms.PageRequestManager的事件激发顺序 测试代码: 测试代码如下: <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Test.aspx.cs" Inherits="AjaxCtpWebDemo.Test" %> <!DOCTYPE html PUBLIC "-//W3C//DTD X

Unity3D中关于场景销毁时事件调用顺序的一点记录

先说一下我遇到的问题,我弄了一个对象池管理多个对象,对象池绑定在一个GameObject上,每个对象在OnBecameInvisible时会进行回收(即移出屏幕就回收),但是当场景切换或停止运行程序时场景中如果还有待回收的对象,就会报错,报错显示的信息为,我的对象池GameObject已经被销毁了云云,因为回收的对象我会把他们作为绑定了对象池的GameObject的子级来方便管理. 所以唯一的可能就是脚本方法调用顺序不可控,即不同GameObject的OnBecameInvisible在其它Ga

Sys.WebForms.PageRequestManagerServerErrorException: An unknown error occurred while processing the

Sys.Application.add_load(function() { var form = Sys.WebForms.PageRequestManager.getInstance()._form; form._initialAction = form.action = window.location.href; }); if (!document.all) { window.onbeforeunload = function() { Sys.WebForms.PageRequestMana

jquery的AJAX中各个事件执行顺序

jquery的AJAX中各个事件执行顺序如下: 1.ajaxStart(全局事件) 2.beforeSend 3.ajaxSend(全局事件) 4.success 5.ajaxSuccess(全局事件) 6.error 7.ajaxError (全局事件) 8.complete 9.ajaxComplete(全局事件) 10.ajaxStop(全局事件)

Ajax方法执行跳转或者加载操作系统报出这样错误Sys.WebForms.PageRequestManagerParserErrorException:如何让解决

当你在代码中使用Response.Redirect();  或者Response.Write();难免会遇到Sys.WebForms.PageRequestManagerParserErrorException:的问题,这次遇到的问题错误提示: Sys.WebForms.PageRequestManagerParserErrorException: The message received from the server could not be parsed. Common causes fo

Sys.WebForms.PageRequestManagerParserErrorException:无法分析从服务器收到的消息

我引起此原因的功能如下: 在aspx页面添加按钮 JS方法: function downPPT() { $("#Btn_DownPPT").click();    } <body>    <form id="form1" runat="server">    <asp:ScriptManager ID="ScriptManager1" runat="server">   

jQuery源码分析系列(33) : AJAX中的前置过滤器和请求分发器

jQuery1.5以后,AJAX模块提供了三个新的方法用于管理.扩展AJAX请求,分别是: 1.前置过滤器 jQuery. ajaxPrefilter 2.请求分发器 jQuery. ajaxTransport, 3.类型转换器 ajaxConvert 源码结构: jQuery.extend({ /** * 前置过滤器 * @type {[type]} */ ajaxPrefilter: addToPrefiltersOrTransports(prefilters), /** * 请求分发器 *

ajax上传文件以及进度事件

在新版ajax中可以上传图片等二进制文件,并且能够监测上传进度. 1.FormData.通过FormData对象来构建提交的二进制数据.用法如下: var oFormData = new FormData(); oFormData.append('file', oMyFile.files[0]); xhr.send(oFormData) 通过向FormData对象下的append方法来添加二进制文件,然后将FormData对象传递给后台. 2.upload对象,用于监测上传的进度 在XMLHtt