2013-03-24 192 views
0

我想使用JSP從JSON頁面獲取一些數據。 JSON收到一個參數userId,根據userId用戶詳細信息填充在JSON頁面中。我正在使用getJSON()方法從頁面獲取數據。但是,我的問題是當按鈕被點擊時,表單被提交。這fiddle是沒有getJSON()方法不按提交後提交表格,但,Here表單提交後,我點擊一個按鈕。我回來了false還沒有用。如何防止按鈕提交表格

請告訴我如何在不提交表單的情況下獲取JSON數據表單。如果有其他方法或更好的方法,請建議一個。

這裏是我的代碼:

$("input[name=submit]").click(function(){ 
    var dataToBeSent = $("form").serialize(); 
    alert (dataToBeSent); 
    $.getJSON(url,dataToBeSent, function(data) { 
     var items = []; 
     $.each(data, function(key, val) { 
      items.push('<li id="' + key + '">' + val + '</li>'); 
     }); 
     $('div').html($('<ul/>', { 
      'class' : 'my-new-list', 
      html : items.join(' ') 
     })); 
    }); 
    return false; 

問候

Dibya

+0

你找[preventDetault()](http://api.jquery.com/event.preventDefault/) ? – SachinGutte 2013-03-24 05:21:56

+0

我didnt知道使用preventDefault .. – NewUser 2013-03-24 05:27:32

+0

我喜歡這[參考](http://dev-tricks.com/event-preventdefault-and-event-stoppropagation-and-event-stopimmediatepropagation/) – 2013-03-24 05:31:25

回答

4

你需要做的event.preventDefault()

$("input[name=submit]").click(function(e){ 
    ................ 
    ................ 
    ................ 
    ................ 
    e.preventDefault(); 
}); 

回報虛假不停止活動爲它不類似於object.onclick。要停止默認行爲,您必須使用preventDefault。

+2

有缺少'); '。 – SachinGutte 2013-03-24 05:24:22

+1

謝謝。更正 – gaurang171 2013-03-24 05:25:18

0

嘗試像這樣把它變成一個函數返回,而不是一個事件監聽器:

<script type="text/javascript"> 
    function serializeForm(){ 
     var dataToBeSent = $("form").serialize(); 
     alert(dataToBeSent); 
     // $.getJSON(); function here 
     return false; 
    } 
</script> 
<form action="#submit" method="post" onsubmit="return serializeForm();"> 
    <input type="text" name="data1" id="data1" value="1" /> 
    <input type="text" name="data2" id="data2" value="2" /> 
    <input type="text" name="data3" id="data3" value="3" /> 
    <input type="submit" /> 
</form> 
+0

「codebins.com上的keyur」方法也起作用。 – MLewisCodeSolutions 2013-03-24 05:28:28

+0

這段代碼和我的demo小提琴有什麼區別?我找不到任何,因此我認爲這是行不通的。 – NewUser 2013-03-24 05:48:15

+0

區別在於窗體上的onsubmit =「」將等待處理窗體,直到serializeForm()函數運行完畢。如果你返回false而不是默認的true,它基本上和event.preventDefault()一樣。我最關心的是濫用jQuery。指向一個函數更有效,分配一個事件處理函數。 – MLewisCodeSolutions 2013-03-24 06:31:01

相關問題