2017-07-11 47 views
0

我已經知道使用ajax發佈html表單的兩種方法。使用JS或AJAX的HTML表單POST使用JS或AJAX

例如..

<script src="http://code.jquery.com/jquery-1.9.1.js"></script> 
    <script type='text/javascript'> 
    /* attach a submit handler to the form */ 
     $("#clientInfo").submit(function(event) { 
      message = $('#name').val(); 
     /* stop form from submitting normally */ 
     event.preventDefault(); 
     var $form = $(this), 
      url = 'post2.php'; 

     /* Send the data using post with element id name and name2*/ 
     var posting = $.post(url, { message: message }); 



    }); 
</script> 

工作正常,但如果我函數調用Event.preventDefault()將從實際提交停止頁面它才能正常運行,

返回假也可能是用過的。

我的問題是,是否可以發佈而不停止實際提交?不需要event.preventDefault()並返回false?我希望網頁正常提交,但我需要在發生這種情況時發佈一些數據。

請指教。

+0

並沒有真正意義。如果'action'和'method'在窗體中被設置並且'name'在輸入上,那麼不需要ajax。表單將以'$ .post'相同的格式發送數據。 – charlietfl

+0

post是一種與服務器通信的方法。爲了提交你需要任何的http方法 –

回答

1

event.preventDefault()用於防止表單元素在提交時導航到另一個URL或頁面的默認操作。如果你想要,你可以手動導航到另一個頁面。否則,使用preventDefault來保持基於操作頁面,以便可以有效地使用ajax(異步js)。

0

我不知道你正在嘗試做的,但也許你可以通過

  1. 做到防止默認
  2. 發送數據
  3. 被JS再次提交。

事情是這樣的:

//the namespace of event would help the unbinding after 
$("#clientInfo").bind('submit.waitSubmittion', function(event) { 
    message = $('#name').val(); 

    event.preventDefault(); 
    var $form = $(this), 
     url = 'post2.php'; 

    /* Send the data using post with element id name and name2*/ 
    var posting = $.post(url, { message: message }, function(){ 
     //after we sure the call made, 
     //unbind our event (including prevent default) and submit the form 
     $form.unbind('submit.waitSubmittion').trigger('submit') 
    }); 



}); 
0

試試這個:

$("#clientInfo").on('submit', function(e) { 
e.preventDefault(); 
var data = $(this).serializeArray(); 
$.ajax({ 
    url : 'whatever.php', // page where you are sending data 
    type : 'post', 
    data : data, 
    success : function(data){ 
    alert(data); // do whatever you want 
    } 
}); 
});