在使用AJAX手动提交之前是否可以设置任意表单ID?

时间:2017-06-16 16:07:22

标签: 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'){
        $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;
              } 

          });

1 个答案:

答案 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;
   }     
});