Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在使用AJAX手动提交之前,是否可以设置任意表单id?_Javascript_Jquery_Ajax - Fatal编程技术网

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

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'){

我编写了这段非常有趣的代码,它只在表单带有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;
              } 

          });

您的第一段代码告诉我:

当表单具有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调用。我已经添加了两段重要的代码。。没有其他事情发生,你可以在这里看到: