我想提交一个表单,同时向我的 Spring MVC 服务器发送一个 ajax 请求。为此,我有这样的表格:
<form id='confirma' method='post' action='confirma'>
<button type='submit' id='save' class='btn btn-success' value='Save'>Enviar</button>
</form>
在我的服务器中,我将有两种方法来接收这两个请求(ajax 请求和普通表单提交)。
// receive from form
@RequestMapping("fromForm")
public String fromForm(Model model)
{
// get atb1 values from database
model.addAttribute("atb1", atb1);
return "file.jsp";
}
// receive from ajax
@RequestMapping("fromAjax")
public void fromAjax(String jsonData)
{
// deserialize json Data and insert it on database
System.out.println("data received!");
}
我的意图是接收来自 Ajax 请求的数据,将其保存在数据库中,并在表单提交方法中获取这些数据,在本例中称为 fromForm。
我知道这可能看起来很疯狂,但我这样做是因为我有一系列提交表单,我想让它们彼此独立,这样我就可以调用它们中的任何一个,而无需传递先前表单中的数据。
我试图通过使用 jQuery 来处理它。所以这就是我所做的:
function ajaxRequest() {
var jsonArray = new Array();
// Complete the jsonArray with an Array of objects created by myself
$.ajax({
url: "fromAjax",
cache: false,
contentType: false,
processData: false,
data: JSON.stringify(jsonArray, null, 4),
type: 'POST',
success: function (data, textStatus, jqXHR) {
console.log("success ajax");
return true;
},
error: function (xhr, status, error) {
console.log("error ajax");
return false;
}
});
}
$(document).on('submit', '#confirma', function(event) {
event.preventDefault();
// by return this method, I would just call the another jsp page, if the ajax
// request is completed successfully
return ajaxRequest();
});
但这不起作用..如果我在表单提交中删除 event.preventDefault,我只会在服务器上收到表单提交。如果我有 event.preventDefault 调用,则只有 ajax 请求会到达服务器。
如何使两个请求都到达服务器?