同步表单提交到异步提交 - 问题

时间:2014-05-08 19:53:46

标签: jquery jsp asynchronous synchronous

我在UI上有一个添加消息的按钮,当用户点击它时,表单被提交,同时用户多次点击刷新(F5),这导致多次显示相同的消息。为了解决这个问题,我将表单从同步提交转换为Asychronous,但它仍然无法正常工作。请协助。以下是代码:

之前的代码:

<td><input class="buttonred" type="submit" value="Confirm Add" name="submit_message"></td>

<s:form action="upd-message" method="POST" validate="true" onsubmit="validateMsg();return false;" enctype="multipart/form-data">

代码之后:

<tr>
                                <td width="15%"><strong>Subject:</strong></td>                                                               
                                <td width="30%" class="contentformnoline">
                                    <input name="subject" size="12" maxlength="100">                              
                                </td>
                                <td width="20%">&nbsp;</td>                                                               
                            </tr>
                            <tr>
                                <td><strong>Message:</strong></td>                                                               
                                <td class="contentformnoline">
                                    <textarea cols="65" rows="3" name="content" wrap="hard"></textarea>                                 
                                </td>
                                <td>&nbsp;</td>                                                               
                            </tr>

<div id="loading_reloadpage" style="display:none;">
                            <tagfile:loading id="loading_reloadpage_img" size="11px"/>&nbsp;Reloading information...
                        </div>

<tr id="test-sc-step2-errors-row" style="display:none">
                        <td></td>
                        <td colspan="2" class="contentform" height="30"><span id="newSR-sc-step2-errors" class="alert"></span></td>
                    </tr> 

在我的jquery.js

 jQuery.submitMessage= function() {
    incidentsInspect.submitMessage = function() {
    var bError = true;
    var subject = $('#subject');
    alert("subject"+$('#subject'));

    var content = $('#content');
    alert("content"+$('#content'));
    if (this.isEmpty(subject)) {
        $('#test-sc-step2-errors-row').html('Please enter a subject.');
    }
    else if (this.isEmpty(content)) {
        $('#test-sc-step2-errors-row').html('Please enter a content.');
    } 
    else {
        bError = false;
    }

    if (bError) {
        $('#test-sc-step2-errors-row').show();
    } else {
        //$('#loading_reloadpage').show();
        //$('#loading_reloadpage_img').show();
        show("loading_reloadpage");
        show("loading_reloadpage_img");

        var dataToPost = {
                actionType : $('#actionType').val()
            };

        var url = '/portal/tickets/update-incident.action';
        $.post(url, dataToPost,
                function(data) {

        }
        ).error(incidentsInspect.handleError);
    }
};

无效的事情:

  1. 当我进行浏览器刷新时,它仍会进行多次提交并多次添加消息。
  2. 验证不起作用,我添加了警告以打印值,但它将值显示为对象。
  3. 展(&#34; loading_reloadpage&#34); 显示(&#34; loading_reloadpage_img&#34);
  4. 请协助。

1 个答案:

答案 0 :(得分:0)

在处理/处理提交的JSP / Servlet中,最后执行此操作:

response.sendRedirect("someotherpage");
return;

由于此重定向发生在服务器端,因此会导致处理页面未存储在浏览器历史记录中,因此无法通过后退按钮访问它,因为您无法访问它,你无法点击它。

但我还应该指出:根本没有关于你的提交的异步。