我是javascript和整个开发前端的新手。
以下是我正在使用的内容:
我添加了PUBNUB.subscribe回调,它可以更新网页上的值。但是,当我第一次加载网页时,我不知道应该显示什么值。
以下是我为解决此问题所做的工作: 我向servlet添加了一个方法,当在POST请求中传入正确的参数时,它将发送一个pubnub消息,其中显示的数量正常。
接下来,我尝试使用jquery调用POST请求,如下所示:
$.post("../servlets/theservlet",
{
update : "true"
});
我尝试将它放在$(窗口).load函数中但是当我加载网页时,它没有按照我的预期进行。 我希望它在加载所有内容后执行POST,这将导致从servlet发布pubnub消息,这将激活PUBNUB.subscribe函数中的回调方法。但是,值没有改变,它仍然是html中硬编码的占位符。
目前,我正在调用setTimeout(“updateUses()”,1500);来自$(window).load函数。 updateUses()与我之前展示的完全相同的$ .post调用。
现在当我加载页面时,占位符值有一点点(似乎长于1.5ms),然后它会更新为正确的值。如果我删除setTimeout并直接调用updateUses(),则不会再发生任何事情。
我需要更改什么才能立即加载值(或者至少没有明显的延迟)?
答案 0 :(得分:2)
如果页面构建器是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通常写在这样的包装器中。