【问题标题】:Updating value from servlet with pubnub and jquery/javascript during page load在页面加载期间使用 pubnub 和 jquery/javascript 从 servlet 更新值
【发布时间】:2012-03-20 10:54:38
【问题描述】:

我是 javascript 和整个前端开发方面的新手。

这是我正在使用的:

  • 在 Tomcat7 上运行的 Java servlet
  • twitter-bootstrap 用于布局/主题
  • Pubnub 跟踪表单提交的次数
  • Javascript/jquery 在网页上显示此值。

我添加了 PUBNUB.subscribe 回调,它可以很好地更新网页上的值。但是,当我第一次加载网页时,我不知道应该显示什么值。

为了解决这个问题,我采取了以下措施: 我在 servlet 中添加了一个方法,当在 POST 请求中传入正确的参数时,它将发送一条 pubnub 消息,其中包含要显示的数量,该方法工作正常。

接下来,我尝试使用 jquery 调用 POST 请求,如下所示:

$.post("../servlets/theservlet",
        {
            update : "true"
        });

我尝试将它放在 $(window).load 函数中,但是当我加载网页时,它并没有达到我的预期。 我希望它在加载所有内容后执行 POST,这将导致从 servlet 发布 pubnub 消息,这将激活 PUBNUB.subscribe 函数中的回调方法。但是,该值没有改变,它仍然是在 html 中硬编码的占位符。

目前,我正在调用 setTimeout("updateUses()", 1500);从 $(window).load 函数中。 updateUses() 与我之前展示的 $.post 调用完全相同。

现在,当我加载页面时,占位符值会存在一段时间(似乎超过 1.5 毫秒),然后它会更新为正确的值。如果我删除 setTimeout 并直接调用 updateUses() ,则不会再发生任何事情。

我需要更改哪些内容才能立即加载值(或至少没有明显延迟)?

【问题讨论】:

  • $.post(url, data);如何在没有成功回调的情况下更新DOM?
  • 此外,为什么不提供已经存在 PUBNUB 统计信息的页面?
  • 因为帖子激活了触发 PUBNUB 发布事件的 servlet,该事件被已经在等待消息的 PUBNUB.subscribe 事件捕获。我不确定如何为已经存在计数器值的页面提供服务,因为如果不执行我正在使用 servlet 执行的数据库查询,我无法访问当前值应该是什么。跨度>

标签: javascript jquery publish-subscribe pubnub


【解决方案1】:

如果页面构建器是 JSP 并且我刚刚阅读的内容是正确的,那么您应该能够执行以下操作:

RequestDispatcher rd=application.getRequestDispatcher("path/to/pubnub/servlet");
rd.include(request,response);

如果您选择坚持使用 ajax 方法,那么 javascript 应该如下所示:

$(function(){
    $.post("path/to/pubnub/servlet", {update:"true"}, function(response){
        //do whatever is necessary with the response here, eg.
        //$("#myElementId").html(response);
    });
});

$(function(){...}) 包装器确保其中的代码在 DOM 准备就绪后尽早执行。因此不需要超时。 jQuery 通常是在这样的包装器中编写的。

【讨论】:

  • 谢谢!我不知道我可以做 function(response){} 部分。我已经更新了我的 servlet 以仅响应该值,然后更新元素的 html,而不是试图强制 pubnub 更新它。
  • 酷!这似乎是一种可行的方法,尽管我仍然对您原来的发布-订阅方法如何设法将值放到页面上感到困惑。
猜你喜欢
  • 2015-04-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-10
  • 2012-04-10
  • 2013-06-22
相关资源
最近更新 更多