2012-08-26 58 views
0

當我提交表單時,例如,我希望使用$ .getJson從服務器獲取數據。Ajax函數在提交的表單中不起作用

我寫了這個:

$(function() { 
    $('#websiteForm').submit(function (event) { 
     $.getJSON('Home/checker', function (data) { 
      alert(data); 
     }); 
    }); 
}) 

我的形式:

<form action="" method="post" id="websiteForm"> 
    <input type="text" name="txtWebsite" id="txtWebsite" /> 
    <input type="submit" name="submit" /> 
</form> 

但是當我點擊提交表單,什麼也不顯示。我在頁面加載時測試了我的$.getJSON函數,它運行良好,所以我不知道爲什麼這個函數不起作用。

+0

我並不真正熟悉MVC,但我知道在asp.net它執行doPostBack javascript函數提交這是從實際提交表單不同的,所以,如果MVC做同樣的事情,你可能不會有這個事件實際上火。我相信你可以綁定到的事件處理函數被內置到JavaScript中,doPostBack會爲你啓動,雖然我無法用手指名。 –

+1

您忘了在提交處理程序中返回false或防止默認值 – orhanhenrik

回答

2

更換式由BUTTOM提交表單(頁面重新加載)。

$(function() { 
     $('button').click(function (event) { 
      $.getJSON('Home/checker', function (data) { 
       alert(data); 
      }); 
     }); 
    }) 

<form action="" method="post" id="websiteForm"> 
<input type="text" name="txtWebsite" id="txtWebsite" /> 
<input type="button" name="button" /> 
</form> 

$(function() { 
     $('#websiteForm').submit(function (event) { 
      $.getJSON('Home/checker', function (data) { 
       alert(data); 
      }); 
      return false; 
     }); 
    }) 

<form action="" method="post" id="websiteForm"> 
<input type="text" name="txtWebsite" id="txtWebsite" /> 
<input type="submit" name="submit" /> 
</form> 
+0

該按鈕並不是一個好主意,因爲大多數瀏覽器在您在其中一個輸入字段中按Enter時調用submit evvent – orhanhenrik

+0

insert window.location =「url」after警報。準備好了,提交。 – Ascension

+0

@Ascension,什麼?請詳細解釋一下? – AmirHossein

2

這應該使其工作

$(function() { 
    $('#websiteForm').submit(function (event) { 
     $.getJSON('Home/checker', function (data) { 
      alert(data); 
     }); 
     return false; 
    }); 
}); 

沒有return false;您提交停靠的JavaScript