ASP.Net增量页面加载调用Javascript
ASP.Net incremental page load call Javascript
我使用的是这里发现的增量页面加载模式。
我有一个加载并显示转轮指示器的主页面,并调用另一个辅助页面。该页面在主页中显示HTML很好。但是,我需要一段javascript来运行,它是由次要页面通过ScriptManager.RegisterStartupScript(blah, blah);
生成的。
我在二级页面注入的HTML底部看到了脚本管理器生成的脚本,但它没有执行。当我直接向二级页面发出请求时,Javascript运行得很好。我甚至尝试将注入的脚本包装在一个函数中,并从主页调用该函数,但主页说该函数未定义。
编辑:这是主页代码:
<script language="javascript" type="text/javascript">
var slat;
var slong;
function check() {
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(function (position) {
// PageMethods.SetSession(position.coords.latitude, position.coords.longitude);
slat = position.coords.latitude;
slong = position.coords.longitude;
callEventsService(position.coords.latitude, position.coords.longitude);
});
}
}
function callEventsService(lat, slong) {
var progress = $get('progress');
progress.style.display = '';
PageMethods.SetSession(lat, slong, eventsCallback);
}
function eventsCallback(result) {
var progress = $get('progress');
progress.style.display = 'none';
GetWebRequest('IncrementalEvent.aspx')
}
function GetWebRequest(getPage) {
var wRequest = new Sys.Net.WebRequest();
wRequest.set_url(getPage);
wRequest.set_httpVerb("GET");
wRequest.set_userContext("user's context");
wRequest.add_completed(OnWebRequestCompleted)
wRequest.invoke();
}
function OnWebRequestCompleted(executor, eventArgs) {
if (executor.get_responseAvailable()) {
var grid = document.getElementById("grid");
grid.innerHTML += executor.get_responseData();
//calldisplaymap(); <-- DOESNT WORK, Function not defined
}
else {
if (executor.get_timedOut()) {
alert("Timed Out");
}
else {
if (executor.get_aborted())
alert("Aborted");
}
}
}
</script>
这是次要页面加载
protected void Page_Load(object sender, EventArgs e)
{
List<GenericEvent> ge = (List<GenericEvent>)Session["publicevents"];
lvevents.DataSource = ge;
lvevents.DataBind();
ExtractEventsToMap(ge);
}
protected void ExtractEventsToMap(List<GenericEvent> lEvents)
{
...........<stuff>........
ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "PointArrays", sb.ToString(), true);
ScriptManager.RegisterStartupScript(this, this.GetType(), "showmap", "function calldisplaymap(){displaymap(" + Session["lat"].ToString() + "," + Session["long"].ToString() + ")};", true);
}
ScriptManager.RegisterStartupScript(blah, blah)
订阅事件$(document).ready()
,所以它不会在你的情况下工作(当你的第二个视图加载,文档准备就绪)。当ajax调用成功后,你应该调用这段Javascript代码来加载第二个视图。
尝试将js函数calldisplaymap()添加到aspx页面,而不是在代码隐藏中注册它。和使用:辅助页(aspx):
<script type="text/javascript">
function calldisplaymap() {
displaymap(<%: Session["lat"].ToString()%>, <%:Session["long"].ToString()%>);
};
</script>
主要页面
function OnWebRequestCompleted(executor, eventArgs) {
if (executor.get_responseAvailable()) {
var grid = document.getElementById("grid");
grid.innerHTML += executor.get_responseData();
calldisplaymap(); //i hope, it will work.
}
else {
if (executor.get_timedOut()) {
alert("Timed Out");
}
else {
if (executor.get_aborted())
alert("Aborted");
}
}
}
相关文章:
- 在调用speak之前预加载Web Speech API
- BrowserId登录请求在文档加载时被调用
- 页面加载后的Ajax调用
- 当库在页脚中加载时,基于PHP条件调用Javascript
- 为什么我的ajax在提交用@HtmlRenderPartial加载的表单时只调用fire一次
- 使用多个依赖项加载只进行一次AJAX调用
- 如何重新加载调用部分视图的操作
- 也需要为“加载”调用脚本,而不仅仅是在“模糊”上
- 加载调用仅适用于第一个节点,不适用于叶
- 如何在不加载调用的页面的情况下调用 URL
- 页面加载调用函数上的 Angularjs
- 页面加载调用后的谷歌地图api
- Jquery加载不回答通过加载调用
- Jquery加载调用结果为空查询字符串
- ASP.Net增量页面加载调用Javascript
- 我如何从页面加载调用ajax单击事件
- 在HTML中加载/调用javascript的适当位置
- 如何停止Ajax映像加载调用新函数
- 页面加载调用javascript函数
- JSF中的页面加载调用命令按钮