我创建了这段非常有趣的代码,只有在表单带有ID时才通过AJAX提交表单。
$(document).delegate('form', 'submit', function(event) {
var $form = $(this);
var id = $form.attr('id');
//if form does not have an id, then submit it without ajax!
if(typeof id == 'undefined'){
$form.submit();
}else{
$.post($form.attr("action"), $form.serialize(), function(response) {
//response stuff
});
event.preventDefault();
}
});
但现在的问题是当我手动从另一个函数进行ajax表单提交调用,并手动传递值时,它会定期提交表单而不使用Ajax。如果表单在html中不存在,如何在将表单提交到TestServlet之前为此ajax调用添加ID?
//is it possible to add a form id before doing the ajax call below?
$.ajax({
// Maybe possible to add form id here?
url: 'TestServlet',
data: {
commentID: commentID,
comment: "lol"
},
type: 'post',
success: function(data){
window.location = data.url;
}
});
答案 0 :(得分:1)
您的第一段代码告诉我以下内容:
当您的表单具有 html id 属性时,您可以使用来自操作属性的网址使用AJAX提交该表单。
如果您的表单没有html id属性,则进行正常提交,该提交也使用 url from action属性。
因此,无论您提交哪种方式,都只需使用一次操作,与您的表单ID 无关。
那么为什么在你的第二段代码中你会设置一个表格ID,如果根本没有表格?
只需创建如下所示的正确网址,例如:
$.ajax({
url: 'TestServlet/{possibleID}',
data: {
commentID: commentID,
comment: "lol"
},
type: 'post',
success: function(data){
window.location = data.url;
}
});