3

我在我的应用程序中面临线程问题,以下是问题的摘要

: 代码的根本原因

document.strikeoffForm.submit();
window.open('<%= baseURL %>/jsps/makeStrikeOffs/Print.jsp', "printStrikeoff");

它的发生是因为异步调用。问题是我正在这样做,

  1. 提交表格

  2. 打开新窗口以显示提交的值。

但是在提交表单之前的一段时间,由于异步调用而发生了 2 操作。

我想要的是如何在第一次调用完成后订购东西,而不是只发生第二次打开窗口的调用。由于这个问题,窗口没有得到正确的值。

我认为 Ajax 中的解决方案,但我不知道该怎么做。

4

2 回答 2

2

使用一点JQuery和一点AJAX很容易做到这一点。试试下面的代码:

    $.ajax({
        type: 'POST',
        url: 'pageToSubmitTo.jsp',
        data: {
            $("#idOfYourForm").serialize()
        },
        beforeSend:function(){
            // this is where we append a loading image
        },
        success:function(data){
            // successful request; 
            window.open('jsps/makeStrikeOffs/Print.jsp', "printStrikeoff");
        },
        error:function(){
            // failed request; give feedback to user
        }
    });

为此,您必须将 JQuery 库包含到您的代码中

于 2013-06-13T06:16:35.337 回答
0

大家好,感谢您的所有投入。这可能不是正确的方法,但到目前为止它工作正常,所以对我有好处。我给出了这样的解决方案:

document.strikeoffForm.submit();           
<%  Thread.sleep(500)%>        
window.open('<%= baseURL %>/jsps/makeStrikeOffs/Print.jsp', "printStrikeoff");      
于 2013-06-13T08:14:10.877 回答