Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/85.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在parsley.js验证后提交_Javascript_Jquery_Ajax_Parsley.js - Fatal编程技术网

Javascript Ajax在parsley.js验证后提交

Javascript Ajax在parsley.js验证后提交,javascript,jquery,ajax,parsley.js,Javascript,Jquery,Ajax,Parsley.js,我有一个通过ajax提交的表单。很好。然而,我正在努力解决如何仅在欧芹成功验证表单时提交它 问题是,即使欧芹显示问题,表单也会提交。我怎么能允许这样呢 <script> $(document).ready(function(){ $('#newsletterSubscribe').on('submit',function(e) { $.ajax({ url:'scripts/newsletter.php', data:$(this).serialize(

我有一个通过ajax提交的表单。很好。然而,我正在努力解决如何仅在欧芹成功验证表单时提交它

问题是,即使欧芹显示问题,表单也会提交。我怎么能允许这样呢

<script>
  $(document).ready(function(){
  $('#newsletterSubscribe').on('submit',function(e) {

  $.ajax({
    url:'scripts/newsletter.php',
    data:$(this).serialize(),
    type:'POST',
    success:function(data){
    console.log(data);
    $("#success").show().fadeOut(20000); //=== Show Success Message==
    },
    error:function(data){
    $("#error").show().fadeOut(20000); //===Show Error Message====
    }
  }); 
  e.preventDefault(); //=== To Avoid Page Refresh and Fire the Event "Click"===
  });
  });
</script> 

$(文档).ready(函数(){
$(“#时事通讯订阅”)。关于('submit',函数(e){
$.ajax({
url:'scripts/newsletter.php',
数据:$(this).serialize(),
类型:'POST',
成功:功能(数据){
控制台日志(数据);
$(“#success”).show().fadeOut(20000);/==显示成功消息==
},
错误:函数(数据){
$(“#错误”).show().fadeOut(20000);/==显示错误消息====
}
}); 
e、 preventDefault();//==要避免页面刷新并触发事件“单击”===
});
});

您需要添加欧芹验证条件,如下所示:

<script>
  $(document).ready(function(){
  $('#newsletterSubscribe').on('submit',function(e) {
  e.preventDefault(); //=== To Avoid Page Refresh and Fire the Event "Click"===
  if ( $(this).parsley().isValid() ) {
     $.ajax({
       url:'scripts/newsletter.php',
       data:$(this).serialize(),
       type:'POST',
       success:function(data){
       console.log(data);
         $("#success").show().fadeOut(20000); //=== Show Success Message==
       },
       error:function(data){
         $("#error").show().fadeOut(20000); //===Show Error Message====
       }
     }); 
   }
  });
  });
</script> 

$(文档).ready(函数(){
$(“#时事通讯订阅”)。关于('submit',函数(e){
e、 preventDefault();//==要避免页面刷新并触发事件“单击”===
如果($(this.parsley().isValid()){
$.ajax({
url:'scripts/newsletter.php',
数据:$(this).serialize(),
类型:'POST',
成功:功能(数据){
控制台日志(数据);
$(“#success”).show().fadeOut(20000);/==显示成功消息==
},
错误:函数(数据){
$(“#错误”).show().fadeOut(20000);/==显示错误消息====
}
}); 
}
});
});

还请注意,预防默认行为被设置为过程的第一步。

这可能会有帮助@karan3112是的,我看到了。我试图将整个AJAX调用放入if($(this).parsley().isValid())中,但它会在表单提交时刷新页面。所以我认为这应该是您的问题。用你的
parsley
代码编辑你的问题。正如@karan3112所说的,在ajax调用之前,包括你正在检查parsley错误的javascript。事实上,这是行不通的。如果您的代码与上面链接中的答案类似,但仍然不起作用,则需要检查javascript错误。