在页面初始化期间完成客户端工作

时间:2013-12-31 17:33:21

标签: javascript asp.net

为了完成入口点页面的初始化,我需要一些只能通过客户端JavaScript通过第三方获取的数据。因此,我需要提供某种临时页面,它将在目标页面呈现之前运行JavaScript代码。我怎么能做到这一点?

我的服务器端代码 MyPage.aspx.vb 可能如下所示:

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    If Not IsPostBack Then
    ...
    ...
    // Read data from DB which gets written via client-side 
    // JavaScript interacting with web service
End Sub

3 个答案:

答案 0 :(得分:1)

创建目标网页的两个不同页面,这里是 MyPage.aspx ,正如您自己所提到的,这是一个像Temp.aspx这样的临时页面。在会话范围中使用标志检查客户端任务是否已完成。像:

会话[ “AjaxCallIsDone”]

在您的 MyPage Page_Load 方法中,检查是否为真:

If(Session["AjaxCallIsDone"] == null ||
   !(Boolean)Session["AjaxCallIsDone"])
    Response.Redirect ("Temp.aspx");

好的,如果你的ajax调用尚未完成,现在它会进入临时页面。

使用jQuery或原始javascript,在临时页面中创建ajax调用:

request = $.ajax({
    url: "third-party-server-url",
    type: "POST",//or may be GET
    data: yourdata
});
request.done(function (response, textStatus, jqXHR){
    //your client-side task is done
});

创建HandlerGeneric Handler让客户端通知服务器有关ajax调用并设置AjaxCallIsDone标志,在处理程序方法中执行此操作;

Session["AjaxCallIsDone"] = true;

然后在你的请求回调中创建另一个调用Handler的ajax调用,然后在handlerRequest回调函数中执行你的重定向:

request = $.ajax({
    url: "third-party-server-url",
    type: "POST",//or may be GET
    data: yourdata
});
request.done(function (response, textStatus, jqXHR){
    //your client-side task is done
    var handlerRequest = $.ajax({
        url: "your-handler-url",
        type: "GET"
    });
    handlerRequest.done(function (response, textStatus, jqXHR){
        document.location="MyPage.aspx";
    });
});

现在一切都已完成。

答案 1 :(得分:0)

到目前为止,您所获得的更多细节/示例代码将会很好。

如果您使用的是jQuery,那么您可以使用getScript方法......

$.getScript( "ajax/test.js", function( data, textStatus, jqxhr ) {
  console.log( data ); // Data returned
  console.log( textStatus ); // Success
  console.log( jqxhr.status ); // 200
  console.log( "Load was performed." );
  //now do what you need to do
});

http://api.jquery.com/jquery.getscript/

希望有所帮助。

答案 2 :(得分:0)

我建议使用jQuery AJAX而不是 Temp.aspx

  

第1步。通过客户端JavaScript从第三方获取数据。

     

第2步。使用jQuery AJAX,从您的数据库中获取数据,该数据通过客户端&渲染它。