您可能已經閱讀了jQuery指南,以及jQuery教程中關於AJAX的第五部分,但今天我將向您展示如何使用AJAX動態發送web表單。JQuery是迄今為止使用AJAX最簡單的方法,如果您是初學者,請查看我們的入門教程。我們直接跳進去吧。
你可能想知道“為什麼我需要AJAX?”HTML完全能夠提交表單,而且提交表單的方式相當輕鬆。AJAX在絕大多數網頁中都得到了實現,而且它的流行程度還在不斷上升。
AJAX帶來的巨大好處是能夠部分加載網頁的部分。這使得頁面顯示更快、更靈敏,只需重新加載一小部分數據而不是整個頁面,就可以節省帶寬。以下是一些基本的AJAX用例:
AJAX為開發人員提供了一種幾乎無限的能力,可以使網頁快速、響應迅速、快速——這是您的訪問者會感謝您的。
在開始之前,您需要一個HTML表單。如果你不知道HTML是什麼,那麼閱讀我們的指南,如何為初學者創建一個網站。
以下是您需要的HTML:
<!DOCTYPE html><html><head><script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js" type="text/javascript"></script><script type="text/javascript"></script></head><body><form action="some/file" method="POST" name="myForm" id="myForm">Name:<input type="text" name="name">Age:<input type="text" name="age"><input type="submit"></form> </body></html>這個html定義了一個包含幾個元素的表單。注意如何有動作和方法屬性。它們定義了表單提交的位置和方式。當您使用AJAX時不需要它們,但是使用它們是一個好主意,因為它可以確保您的網站的訪問者在禁用JavaScript的情況下仍然可以使用它。這個頁面包括Google在其CDN上託管的jQuery。頭部包含一個腳本標記——這是編寫代碼的地方。
這個表單現在看起來可能有點枯燥,所以您可能需要考慮學習CSS來讓它更生動一些。
有幾種方法可以使用JavaScript提交表單。第一個也是最簡單的方法是通過submit方法:
document.getElementById('myForm').submit();當然,如果願意的話,可以使用jQuery將表單作為目標——這沒有什麼區別:
$('#myForm').submit();這個命令告訴瀏覽器提交表單,就像按提交按鈕一樣。它通過它的id將表單作為目標,在本例中,這就是myForm。這不是AJAX,因此它將重新加載整個頁面——這並不總是令人滿意的。
在表單的method屬性中,指定了如何提交表單。這可以是POST或GET。使用AJAX提交表單時不使用此屬性,但可以使用相同的方法。
現代網絡的許多功能都是通過GET或POST請求來實現的。一般來說,GET用於檢索數據,POST用於發送數據(並返回響應)。數據可以通過GET發送,但是POST幾乎總是更好的選擇,尤其是對於表單數據。您以前可能見過GET請求--它們發送附加到URL的數據:
somewebsite.com/index.html?name=Joe問號告訴瀏覽器,緊跟其後的任何數據都不用於遍歷網站,而是應該傳遞到頁面,供其處理。這很適用於簡單的事情,如頁碼,但也有一些缺點:
最大字符數限制:url中可以發送的字符數上限。如果您試圖發送大量數據,則可能沒有足夠的數據。
可見性:任何人都可以看到GET請求中發送的數據——這對密碼或表單數據等敏感數據都沒有好處。
POST請求的工作方式類似,只是它們不發送URL中的數據。這意味著可以發送更多的數據(數據稱為有效負載),並且通過不公開數據來獲得一些安全性。儘管如此,數據仍然可以很容易地訪問,因此如果您想完全放心,請查看SSL證書。
無論使用POST還是GET,數據都以鍵->;值對發送。在上面的URL中,鍵是name,值是Joe。
提交表單的更好方法是使用異步JavaScript和XML(AJAX)。JavaScript支持AJAX調用,但使用起來可能會很混亂。JQuery實現了這些完全相同的方法,但它是以一種易於使用的方式實現的。您可以指示瀏覽器執行GET或POST請求—在本例中,請使用POST,但GET請求的執行方式與此類似。
語法如下:
$.post('some/url', $('#myForm').serialize());這段代碼做了幾件事。第一部分($)讓您的瀏覽器知道您想使用jQuery執行此任務。第二部分從jQuery調用post方法。您必須傳入兩個參數;第一個是要將數據發送到的url,而第二個是數據。您可能會發現(取決於您嘗試訪問的URL),瀏覽器的同源安全策略可能會在這裡產生干擾。您可以啟用跨源資源共享來解決這個問題,但只要指向與您的頁面位於同一域上的URL就足夠了。
第二個參數調用窗體上的jQuery serialize方法。這個方法訪問表單中的所有數據,併為傳輸做好準備——它將它們序列化。
僅此代碼就足以提交一個表單,但您可能會發現有些奇怪。值得研究瀏覽器開發人員工具,因為這些工具可以輕鬆地調試網絡請求。
另外,Postman是測試HTTP請求的優秀免費工具。
如果您想在按下submit按鈕時使用AJAX提交表單,那麼同樣簡單。您需要將代碼附加到表單的提交事件。代碼如下:
$(document).on('submit','#myForm',function(){ $.post('some/url', $('#myForm').serialize()); return false;});這段代碼做了幾件事。提交表單後,瀏覽器將首先運行代碼。然後,代碼使用AJAX提交表單數據。所需的最後一步是防止原始表單提交——您已經用AJAX完成了這項工作,所以您不希望再次發生這種情況!
如果希望在AJAX完成後執行其他任務(或者甚至返回狀態消息),則需要使用回調。JQuery使這些工具非常易於使用——只需將函數作為另一個參數傳遞如下:
$.post('url', $('#myForm').serialize(), function(result) { c***ole.log(result);}result參數包含數據發送到的url返回的任何數據。您可以輕鬆地響應此數據:
if(result == 'success') { // do some task}else { // do some other task}這篇文章到此為止。希望您現在對HTTP請求以及AJAX如何在表單上下文中工作有了深入的瞭解。
你今天學了什麼新把戲嗎?如何在表單中使用AJAX?請在下面的評論中告訴我們您的想法!
圖片來源:vectorfusionart/Shutterstock
...伺服器傳送資訊的兩種方法。這些方法有助於透過表單從使用者檢索資訊。 目錄 1. 概述和主要區別 2. 什麼是PHP中的GET方法 3. 什麼是PHP中的POST方法 4. 並排比較-以表格形式在PHP中使用GET vs POST方法 5. 摘要 什麼是php中的get方法(ge...
...ript(AJAX)和開發restfulweb服務。它也可以與許多語言一起使用,如java、C++、C++、Python。JSON的一些資料型別有Number、Boolean、String、Array、Object、Null。JSON語法是使用鍵值對,資料用逗號分隔。 圖01:JSON 下面是一個JSON物件的例子。 ...
...區別在於CakePHP提供了一個內建的ORM,而CodeIgniter必須為ORM使用第三方庫。CakePHP和CodeIgniter之間的另一個重要區別是CakePHP具有程式碼生成控制檯、預定義的自動呼叫函式和內建Ajax支援,而CodeIgniter沒有這些功能,需要獨立外掛的...
...兩種web程式語言,它們的開發目的是在web頁面上提供一個使用者友好、高效和有吸引力的環境。Ajax和jQuery的關鍵區別在於jQuery更像一個框架,它是使用JavaScript構建的,而Ajax則是一種使用JavaScript與伺服器通訊的技術或方式,而...
...新的版本,Outlook可以作為域名和桌面電子郵件客戶端來使用,而Hotmail只是微軟擁有的域名。 電子郵件已經成為我們生活中不可或缺的一部分。我們透過基於web的介面或桌面電子郵件客戶端訪問電子郵件。這些工具對於減輕當今...
CGI代表公共閘道器介面。它是web伺服器執行程式併為web瀏覽器生成輸出的標準協議。該程式被稱為CGI程式(或CGI指令碼)。當用戶的web瀏覽器請求特定的URL時,它代表web伺服器執行以產生輸出。 ...
你在弄清楚如何填寫PDF表格時有困難嗎?你並不孤單。這不僅僅是一個普通的問題——這是每個計算機使用者都應該學習的一項重要的微操技能。 ...
有沒有想過如何在兩種程式語言之間傳送資料?是否嘗試傳送一個物件或多個數據段? ...
...是想收集客人的考勤資訊,請轉到RSVPify。這是一個易於使用的web平臺,它為您的與會者建立一個表單,其中包含一個您可以與他們共享的唯一URL。您可以編輯您的來賓列表和某些詳細資訊,例如誰可以帶來+1,以及誰可以看到某...