Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/463.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 未调用On submit函数_Javascript_Jquery_Ajax - Fatal编程技术网

Javascript 未调用On submit函数

Javascript 未调用On submit函数,javascript,jquery,ajax,Javascript,Jquery,Ajax,在文件末尾,我有: <script> $("#submitEvent").click(function() { $("#eventForm").submit(); }); $(document).ready(function() { $('#eventForm').submit(function() { console.log("I am on submit"); }); }); </script

在文件末尾,我有:

<script>
    $("#submitEvent").click(function() {
        $("#eventForm").submit();
    });


    $(document).ready(function() {


    $('#eventForm').submit(function() {
        console.log("I am on submit");

    }); });
</script>

您只需要将代码移动到ready函数中

<script>
    $(document).ready(function() {
       $("#submitEvent").click(function() {
          // run ajjax code here
       });

       $('#eventForm').submit(function(e) {
           e.preventDefault(); // stops the page from submiting
           console.log("I am on submit");
        }); 
     });
</script>

$(文档).ready(函数(){
$(“#提交事件”)。单击(函数(){
//在这里运行ajjax代码
});
$('#eventForm')。提交(函数(e){
e、 preventDefault();//停止提交页面
console.log(“我正在提交”);
}); 
});
我更新了代码,你不需要提交表格。只需单击运行ajax。

试试这个

$(document).ready(function() {

    $("#submitEvent").click(function() {
        $("#eventForm").submit();
    });

    $('#eventForm').submit(function(e) {
        e.preventDefault();
        console.log("I am on submit");
    });
});
它将停止表单提交,以便您现在可以查看事件是否确实被触发


可能只是因为正在提交的表单在您看到控制台输出之前正在重新加载页面。

如果您说没有调用表单提交处理程序的原因是您在控制台中没有看到输出,请记住提交表单会完全破坏并替换页面。在控制台被清除之前,您可能没有时间查看日志消息


你在评论中说:


嗯,那么我如何检查是否会调用ajax呢

您可以通过在
控制台.log
语句上设置断点并查看是否命中断点来进行检查。或者,如果您想调试1990年代的样式,请使用
警报


但是请注意,如果表单的结果将替换页面,那么从表单提交处理程序中执行ajax是不可靠的。(如果表单的结果无法替换页面,您可能没问题。)这是因为ajax是异步的,这意味着您的提交处理程序可以启动它,但在被拆卸取消之前,它没有时间完成。

问题在脚本上方说:“在文档末尾,我有:”(我的重点)。是的,我更新了我的问题,并且包含在ready anyways中-仍然没有任何内容:-DHm,那么我如何检查是否将调用ajax。尝试在domajax onSuccess中更改一些值?正如我所说的,在处理程序中放置一个断点,看看它是否被命中。或者,如果您想从20世纪90年代开始调试,请输入
警报
:-)@T.J.Crowder看来你完全正确,我包括了来自Archer答案的代码-它确实会打印出来。@aubergine:啊,很好,就像我把它作为一个实际答案发布一样。:-)我从这个问题中学到了一些东西,谢谢:jQuery将调用submit处理程序,即使等价的JavaScript操作(以编程方式调用
HTMLFormElement
上的
submit
)不会。有趣。它实际上是在你更新后打印的!那么@T.J.Crowder是对的?是的。现在您知道事件处理程序正在工作,只需按照您的意愿处理提交:)
<script>
    $(document).ready(function() {
       $("#submitEvent").click(function() {
          // run ajjax code here
       });

       $('#eventForm').submit(function(e) {
           e.preventDefault(); // stops the page from submiting
           console.log("I am on submit");
        }); 
     });
</script>
$(document).ready(function() {

    $("#submitEvent").click(function() {
        $("#eventForm").submit();
    });

    $('#eventForm').submit(function(e) {
        e.preventDefault();
        console.log("I am on submit");
    });
});