【问题标题】:jQuery Ajax is not running on the same page but redirecting to the page instead?jQuery Ajax 不在同一页面上运行,而是重定向到该页面?
【发布时间】:2015-05-25 16:39:37
【问题描述】:

我正在尝试将 Bootstrap Validator 操作与 Ajax 调用相结合。验证部分工作正常,但由于某种原因,它重定向到调用的实际页面,而不是在同一页面上运行它。我的代码的哪一部分是错误的?

$('.newsletter').bootstrapValidator({
                  message: 'This value is not valid',
                  live: 'submitted',
                  submitHandler: function(validator, form, submitButton) {

                                  e.preventDefault();
                                  var postdata = $('.newsletter-subscribe form').serialize();
                                  $.ajax({
                                      type: 'POST',
                                      url: 'newsletter.php',
                                      data: postdata,
                                      dataType: 'json',
                                      success: function(json) {
                                          if(json.valid == 1) {
                                             $('.newsletter-tab').hide();
                                              $('.success-message').css('display','block');
                                          }
                                          else if(json.valid == 0) {
                                             $('.newsletter-tab').hide();
                                              $('.exists-message').css('display','block');
                                          }
                                          else {
                                             $('.newsletter-tab').hide();
                                             $('.error-message').css('display','block');
                                          }
                                      },
                                      timeout: 10000
                                  });

                  },
                  feedbackIcons: {
                      valid: '',
                      invalid: '',
                      validating: ''
                  },
                  fields: {
                      newsletter_email: {
                          validators: {
                              notEmpty: {
                                  message: 'Email is required'
                              },
                              emailAddress: {
                                  message: 'Email must be valid'
                              }
                          }
                      }


                  }
              });

【问题讨论】:

标签: jquery ajax twitter-bootstrap


【解决方案1】:

我想解决方案应该是这样的:

$('.newsletter').bootstrapValidator({
    message: 'This value is not valid',
    live: 'submitted',
    submitHandler: function(validator, form, submitButton) {
         var postdata = $('.newsletter-subscribe form').serialize();
         $.ajax({
             ....
         });
    }
});

$('.newsletter').submit(function (e) {
    e.preventDefault();
});

【讨论】:

    【解决方案2】:

    也许代码末尾的return false; 会改变提交按钮的行为。

    【讨论】:

    • return false 就像 JavaScript 中的灵丹妙药。我认为应该有一些配置(如 ExtJS 中的 standardSubmit:false)或至少适当的函数调用,如 e.preventDefault()。 =)
    • 确实如此。他有 e.preventDefault() :/
    • 我刚试过……没用。不管有没有 e.preventDefault。
    • 这没有提供问题的答案。要批评或要求作者澄清,请在其帖子下方发表评论。
    • @bwest 我希望我能,但我不能,因为我没有足够的积分。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-08-11
    • 1970-01-01
    • 1970-01-01
    • 2012-09-22
    • 2020-09-11
    • 1970-01-01
    • 2010-12-30
    相关资源
    最近更新 更多