javascript - AJAX 成功回调仅执行第一个功能

标签 javascript jquery

我提交了一个简单的表单,成功后我会收到一条警报并要求清除表单。我确实收到警报,信息已成功添加到数据库中,但第二个调用(清除表单)并未执行。我确信我做错了一些简单的事情,但我无法弄清楚。

$('#contact_submit').click(function(e){
                if ($("#submit_form_contact").valid()) {


                    var post_data = {
                        "name" : $('#name').val(),
                        "email" : $('#email').val(),
                        "inquiry" : $('#inquiry_dropdown option:selected').text(),
                        "message" : $('#message').val()
                    };


                    $.ajax({  
                      type: "POST",  
                      url: "process-contact.php",  
                      data: post_data,  
                      success: function(data) {  
                        alert("Thank you for contacting us.");
                        $('#submit_form_contact').reset();
                      }  
                    });

                    e.preventDefault();

                }

此外,提交按钮只是一个按钮,而不是提交输入。是否有必要阻止Default()?我对此很陌生。

最佳答案

jQuery 没有 .reset() 方法。

这样做:

$('#submit_form_contact')[0].reset();

这会获取第一个 DOM 元素,并调用 native .reset()。如果有可能找不到该表单,请测试该元素。

var f = $('#submit_form_contact')[0];

if (f)
    f.reset();

当然,您实际上并不需要 jQuery 来通过 ID 获取元素,特别是如果您不打算使用任何 jQuery 方法。

var f = document.getElementbyId('submit_form_contact');

if (f)
    f.reset();

另一种替代方法是将提交按钮设置为 ajax 调用的 context:,然后使用其 form 属性。

                $.ajax({  
                  context: this,
                  type: "POST",  
                  url: "process-contact.php",  
                  data: post_data,  
                  success: function(data) {  
                    alert("Thank you for contacting us.");
                    this.form.reset();
                  }  
                });

关于javascript - AJAX 成功回调仅执行第一个功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18937283/

相关文章:

javascript - 关于 document.ready 的 JQuery 解释

jquery - Twitter bootstrap 2 菜单弹出行为异常,我该如何解决?

jquery - 如何使用 jquery 将项目移动到组之间的空列表?

javascript - 单击按钮时未激活 Angular Controller 中的功能

javascript - jquery 不改变调用 ajax 页面的输入值

javascript - 在元素属性中使用用户输入是否安全?

jquery - 如何使动画缓动(缓入和缓出)与持续时间无关?

javascript - Jquery Datepicker 在选择后保持可见

javascript - 带有 Vue 3 的 Vue 路由器引发错误 "Uncaught TypeError: Object(...) is not a function"

javascript - jQuery .remove() 不删除 img