Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/454.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的页面中,是否可以调用表单?_Javascript_Jquery_Ajax_Forms - Fatal编程技术网

Javascript 在一个有两个Ajax的页面中,是否可以调用表单?

Javascript 在一个有两个Ajax的页面中,是否可以调用表单?,javascript,jquery,ajax,forms,Javascript,Jquery,Ajax,Forms,我在一个页面上有两个表单,一个表单用来上传文件,另一个表单出现在一个弹出窗口中,当文件上传后会要求发送电子邮件。两者都使用ajax,我在处理这两者时遇到了一些问题 我希望我的每个ajax代码只在各自的表单上工作,而不是在我的html页面上找到的第一个表单(现在只有最高的由我的ajax代码执行) AJAX: # for uploading files form $("#fileupload").fileupload({ dataType: 'json', sequentialU

我在一个页面上有两个表单,一个表单用来上传文件,另一个表单出现在一个弹出窗口中,当文件上传后会要求发送电子邮件。两者都使用ajax,我在处理这两者时遇到了一些问题

我希望我的每个ajax代码只在各自的表单上工作,而不是在我的html页面上找到的第一个表单(现在只有最高的
由我的ajax代码执行)

AJAX:

# for uploading files form
  $("#fileupload").fileupload({
    dataType: 'json',
    sequentialUploads: true, 
    start: function (e) {  
      $("#modal-progress").modal("show");
    },
    ...
    done: function (e, data) {
      if (data.result.is_valid) {
        ...
      }
    }
  });

# for email form
$(document).on('submit', '#formTwo', function(e){
    e.preventDefault();

    $.ajax({
        # is there a command to specify in which form it should run ?
        type:'POST',
        url:'/tools/newsletter/',
        data:{
            email:$('#email').val(),
            csrfmiddlewaretoken:$('#formTwo input[name=csrfmiddlewaretoken]').val(),
        },
    });

    $("#modal-progress").modal("hide");
});
forms.html

<!-- Email form -->
<form id="formTwo" method="post" action="newsletter">
  ...
  <input id="email" maxlength="255" placeholder="Votre adresse email" name="email" type="text" class="form-control">
  <input type="submit" class="btn btn-success">
</form>


<!-- Uploading files form -->
<form id="formOne" method="post" enctype="multipart/form-data" action="{% url 'basic_upload' %}">
...
<input id="fileupload" type="file" name="file" multiple>
</form>

...
...
如何解决此问题?

您可以在
if
语句中使用
$(this).is(选择器)
来验证您正在处理的表单,如

$(document).on('submit', '#formTwo, #formOne', function(e){
    e.preventDefault();

    if($(this).is('#formTwo')) {
        $.ajax({
            type:'POST',
            url:'/tools/newsletter/',
            data: {
                email:$('#email').val(),
                csrfmiddlewaretoken:$('#formTwo input[name=csrfmiddlewaretoken]').val(),
            },
        });
    } else if ($(this).is('#formOne')) {
        // formOne code 
    }

    $("#modal-progress").modal("hide");
});

您的第一个表单没有正确关闭,它缺少表单前面的关闭标记的
/
。@Pango只是在stackoverflow上编辑的一个输入错误,已更正。