我只有在使用ajax提交页面时才需要运行特定的javascript函数。 我尝试了以下内容:
ScriptManager.RegisterOnSubmitStatement(Page, Page.GetType(),
"scriptName", "MyFunction();");
但它似乎也在正常的后卫期间运行。我也尝试用Page
控件替换UpdatePanel
对象但没有任何区别。
是否可能在javascript函数MyFunction()
内检测它是ajax还是正常提交?
答案 0 :(得分:1)
您可以使用Sys.WebForm.PageRequestManager两个事件
1)add_initializeRequest - >当启动ajax回发时
2)add_endRequest - >当ajax回帖结束时。
PageRequestManager还提供了一个函数" get_isInAsyncPostBack()"这告诉我们页面是否仍在进行现有的ajax回发。
示例:
Sys.WebForms.PageRequestManager.getInstance().add_initializeRequest(function () {
var prm = Sys.WebForms.PageRequestManager.getInstance();
// Only one async request at a time
if (prm.get_isInAsyncPostBack()) {
prm.abortPostBack();
}
//Call the function or process you want to perform on ajax request begin
});
Sys.WebForms.PageRequestManager.getInstance().add_endRequest(function () {
//Call the fucntion or process you want to perform on ajax request end
});
有任何疑问,请随时提出
答案 1 :(得分:0)
此代码解决了这个问题。感谢@ user1341446让我指向正确的方向。
在提交时注册javascript函数:
ScriptManager.RegisterOnSubmitStatement(Page, Page.GetType(),
"scriptName", "MyFunction();");
在函数内部检测ajax是否提交:
function MyFunction()
{
var isAjaxSubmit = false;
if (typeof (Sys) != "undefined")
isAjaxSubmit =
Sys.WebForms.PageRequestManager.getInstance()._postBackSettings.async;
}