2016-12-29 115 views
1

我面临的问题,ifi我使用ajax调用,返回false不工作.. 和表单提交成功..我希望当我得到回应1种形式不提交..但对Ajax请求的响应形式仍然提交,请帮助我..关于ajax响应返回false不工作和形式不要停止提交

这里是代码:

<form action="<?php echo base_url(); ?>do/add/review" method="post" name="dologin" id="dologinsubmitreview" onSubmit="return showpopupbox();"> 


function showpopupbox(){  
    var strs = $("form").serialize(); 
      var autocompleteURL = "<?php echo base_url(); ?>grahak/save_record_session?rnd=" + Math.random() +"&sessiondata="+ $("form").serialize(); 
      $.ajax({ 
        url : autocompleteURL, 
        async: false, 
        cache: false, 
        method : "POST", 
        success : function(respd) 
        { 
         if(respd == 1){ 
          $("#classiconpopupbx").show(); 
          return false; 
         } 
         else { 
          return true; 
         } 
        } 
       }); 
} 
+1

了解什么意思'asynchronous' –

+0

我想要的解决方案,这是强制性的使用AJAX ..所以请在成功回调电话解决方案 – DeDevelopers

+0

返回值被发送到位桶 –

回答

1

你需要重新设计你的流量。 Javascript是异步的,这意味着在AJAX调用完成之前表单被提交了很长时间。

相反,使用jQuery on绑定到事件,捕捉在该函数的事件,并立即运行event.preventDefault()将从停止提交表单。然后运行你的AJAX调用。

在你的AJAX成功函数中,当它返回“truthy”时,你需要决定做什么。不知道更多关于你想要的结果,不可能建议如何处理这件事。你可以这样做

<!-- remove the inline onsubmit script handler --> 
<form action="<?php echo base_url(); ?>do/add/review" method="post" name="dologin" id="dologinsubmitreview"> 


// no-conflict safe document ready 
jQuery(function($) { 
    // Bind to the form submit here, and call event.preventDefault immediately 
    $('#dologinsubmitreview').on('submit', function(event) { 
     event.preventDefault(); 
     showPopUpBox(event); 
    } 

    function showpopupbox() {  
     var strs = $("form").serialize(); 
     var autocompleteURL = "<?php echo base_url(); ?>grahak/save_record_session?rnd=" + Math.random() +"&sessiondata="+ $("form").serialize(); 
     $.ajax({ 
      url : autocompleteURL, 
      async: false, 
      cache: false, 
      method : "POST", 
      success : function(respd) { 
       if(respd == 1){ 
        $("#classiconpopupbx").show(); 
       } else { 
        // Do what you need to do here if the AJAX is true 
       } 
      } 
     }); 
    } 
}); 
+0

谢谢你的帮助! – DeDevelopers

0

的一种方式是防止提交,总是,那么如果你的Ajax调用返回true,发布形式(并告诉代码,让这一次):

对于初学者,不要将内联事件处理程序与jQuery混合使用。 jQuery的方式更好:

// Start by not allowing submit 
var allowSubmit = false; 
$('form').submit(function(){ 
    var $form = $(this); 
    // Only run the ajax if this is not a "real" submit 
    if (!allowSubmit){ 
     // do the ajax call 
     $.ajax({ 
      url: ... 
      success: function(respd){ 
       if(respd == 1){ 
        $("#classiconpopupbx").show(); 
       } 
       else { 
        allowSubmit = true; 
        $form[0].submit(); // important - bypass jQuery event handler 
       } 
      } 
     }); 
    } 
    // Conditionally allow the form to submit 
    return allowSubmit; 
});