我正在使用增量頁面加載模式找到here。ASP.Net增量頁面加載調用Javascript
我有一個主頁加載並顯示一個轉輪指示器,並調用另一個輔助頁面。該頁面在主頁面中顯示HTML很好。不過,我需要通過ScriptManager.RegisterStartupScript(blah, blah);
由輔助頁面生成的一段JavaScript運行。
我在由輔助頁面注入的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);
}
謝謝,你有一個exapmle? – 2013-03-24 01:49:20
如果你顯示你的代碼,我會給你工作的例子 – 2013-03-24 07:57:08
謝謝,我編輯原始帖子來顯示代碼 – 2013-03-24 15:44:47