2016-09-29 39 views
0

以下jsp代碼可以在form的forntend中正常工作,但我想了解如何使用Jquery調用動作。 總之我不想使用動作,並直接通過jquery調用相同的動作。使用Jquery調用Spring MVC而不是表單

<form:form id="uploadCSVForm" modelAttribute="PeopleFileUpload" method="post" enctype="multipart/form-data" action="/admin/institutions/${mrceuser.person.institution.id}/uploadCsv"> 
     <p> 
      <form:label for="fileData" path="fileData">File</form:label><br/> 
      <form:input path="fileData" type="file"/> 
     </p> 
     <p> 
      <input type="button" value="Save" onclick="InstitutionDialog.prepareForSubmit('#uploadCSVForm');" /> 
      <input type="button" value="Cancel" onclick="InstitutionDialog.hide();return false;"/> 
     </p> 
     </form:form> 

我已經實現了使用

ChangeDialog.noInputSubmit(ChangeDialog.InstitutionsProperty, "Uploaded CSV for " + jQuery('input#name').val(), 
     function() {jQuery('#uploadCSVForm').submit()}); 

凡ChangeDialog.noInputSubmit看起來像這樣一樣:

ChangeDialog.noInputSubmit = function (changeArea, message, callback) { 
    ChangeDialog.changeArea = changeArea.id; 
    var valueMap = ChangeDialog.getValueMap(); 
    valueMap.description = message; 
    jQuery.ajax({ 
     url:RootPath.getPath()+'/admin/changes/', 
     type:'POST', 
     data:valueMap, 
     success:callback, 
     error:ChangeDialog.handleError 
    }); 
    return false; 
}; 

回答

1

如果只想使用jQuery提交表單,那麼你需要首先防止提交事件,然後在成功時觸發提交事件如下:

$('#btnSubmit').click(function (e) { 
e.preventDefault(); // prevent default action of submit button 
var element = this;  
ajax({ 
    url:RootPath.getPath()+'/admin/changes/', 
    type:'POST', 
    data:valueMap, 
    contentType: "application/json; charset=utf-8", 
    success: function (data) { 
    if (data.status == "Success") { 
     alert("Done"); 
     $(element).closest("form").submit(); // submit form 
    } else { 
     alert("Error occurs on the Database level!"); 
    } 
    }, 
    error:ChangeDialog.handleError 
}); 
}); 

您可以根據需要更改方法名稱和參數,但核心邏輯應該相同。

相關問題