Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/450.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 使用jQuery截取表单提交_Javascript_Jquery - Fatal编程技术网

Javascript 使用jQuery截取表单提交

Javascript 使用jQuery截取表单提交,javascript,jquery,Javascript,Jquery,我想通过jQuery截获提交,并首先检查服务器上是否存在文件。如果存在,则继续请求;如果不存在,则显示消息,不发送请求。这就是我所拥有的: $("#methodForm").submit(function(e){ checkIndex('upload/segments.gen').done(function() { return true; }).fail(function () { e.preventDefault(); ale

我想通过jQuery截获提交,并首先检查服务器上是否存在文件。如果存在,则继续请求;如果不存在,则显示消息,不发送请求。这就是我所拥有的:

$("#methodForm").submit(function(e){

    checkIndex('upload/segments.gen').done(function() {
        return true;
    }).fail(function () {
        e.preventDefault();
        alert("No index present!");
        return false;
    });
});
这是
检查索引()

发生的情况是:文件存在于服务器上,但是
checkIndex
返回失败。首先我看到警报弹出窗口,然后它继续向服务器发送post请求


我将
checkIndex()
用于其他目的,也可以在预期的情况下使用,因此我很确定错误在提交例程中的某个地方。但是我找不出它有什么问题。

它实际上不是这样工作的,checkIndex是异步的,所以当它返回任何内容时,表单已提交,返回语句也在不同的范围内,请尝试类似的操作:

$("#methodForm").submit(function(e){
    e.preventDefault(); //prevent submit
    var self = this;
    checkIndex('upload/segments.gen').done(function() {
        self.submit(); //submit if ajax OK
    }).fail(function () {
        alert("No index present!");
   });
});

您不能从回调返回到异步方法(如ajax)。相反,请阻止一起提交,然后在准备好后提交

$("#methodForm").submit(function(e){
    e.preventDefault();
    var form = this;
    checkIndex('upload/segments.gen').done(function() {
        form.submit(); // submit bypassing the jQuery bound event
    }).fail(function () {
        alert("No index present!");
    });
});

不幸的是,这只适用于同步AJAX请求。您应该禁用按钮并在
done
callback@KevinB-是的,它会改变它!这对我不起作用。我得到“TypeError:form.submit不是函数”,如果我使用$(form).submit()它会反复调用submit处理程序。如果有一个元素具有
id=“submit”
,请将其更改为其他元素。我还遇到了一个类似的问题:显示要覆盖的图像的对话框。点击“确认”按钮(
元素)将提交表单。我必须确保在处理单击事件时添加
e.preventDefault()
,否则我的请求将被阻止。
$("#methodForm").submit(function(e){
    e.preventDefault();
    var form = this;
    checkIndex('upload/segments.gen').done(function() {
        form.submit(); // submit bypassing the jQuery bound event
    }).fail(function () {
        alert("No index present!");
    });
});