Javascript 在使用AJAX手动提交之前,是否可以设置任意表单id?
我编写了这段非常有趣的代码,它只在表单带有ID时通过AJAX提交表单Javascript 在使用AJAX手动提交之前,是否可以设置任意表单id?,javascript,jquery,ajax,Javascript,Jquery,Ajax,我编写了这段非常有趣的代码,它只在表单带有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'){
$(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;
}
});
您的第一段代码告诉我: 当表单具有html id属性时,您可以使用url from action属性用AJAX提交它 当您的表单没有html id属性时,您会进行一次正常的提交,该提交也会使用动作属性的url 因此,无论您以何种方式提交,您都使用单个操作,它与表单id无关 那么,如果根本没有表单,为什么要在第二段代码中设置表单id? 只需创建一个正确的url,如下所示,例如:
$.ajax({
url: 'TestServlet/{possibleID}',
data: {
commentID: commentID,
comment: "lol"
},
type: 'post',
success: function(data){
window.location = data.url;
}
});
你能再解释一下吗?不确定是否有人能理解你的要求?你可能应该使用而不是
delegate
我需要代码保持不变,因为一切都是如何构造的。我所需要知道的就是如何向最后一段代码中显示的ajax调用添加表单id。或者这是否可能?当您进行不同的Ajax调用时,表单是如何提交的?不清楚你在问什么。第二段代码不应该触发第一段代码snipplet。如果没有id,是否尝试使用非ajax提交表单?如果有id,是否使用ajax提交表单?我明白了。那很有帮助!因此,我应该检查action属性是否也未定义,如果未定义,则手动设置id&action。所以在ajax调用中放置“url”值将毫无意义,对吗?@JonathanLaliberte stop-lol。你把事情搞砸了。告诉我你真正想做什么,忘记ID和动作属性,想想你的目标是什么。通过ajax手动提交值。。。但它触发了我的另一个该死的委托函数。@JonathanLaliberte我可能知道你的问题了。让我看看您是如何实现ajax调用的,在哪里单击。您显示的代码还不够,我只是在另一个函数的末尾添加了ajax调用。我已经添加了两段重要的代码。。没有其他事情发生,你可以在这里看到: