JQuery 初探 $.get $.post

工作真的是一件很妙的事情,大概就跟人生的所有際遇相同。

雖然並沒有什麼可以拿出來炫耀的成就,不過至少我選擇資訊這條路不算偏差太多。

從大學決定要走資工這條路以後,算是沒有後悔過。
一路走來做的事情基本上和興趣都相差部會太遠。

從來也沒想到我會碰到JQuery,我記得早期聽到我總覺得我離他很遙遠。
但是沒想到忽然在工作上需要某些功能,查阿查摸阿摸,就好像理解了這東西在幹嘛。

他就像它官方logo寫的一樣 “Write less, do more”
用過就真的覺得很有趣。況且他是以每個瀏覽器都支援的javascript作為基礎!

以前大家都跟我說JQ很簡單,就是javascript的api。
可以無痛上手,直接include就可以用,我還記得當下心中只覺得唬爛。
最好是這麼簡單,看起來都是一堆看不懂的$. $xxx 之類的。

結果跟他培養一陣子感情以後發現,好像真的就是這樣…
include以後,就可以亂用了,還真的很強大。

主要是我們家的產品會需要用網頁介面來控制機器,這機器就大概是一個linux的Server
以前大概都需要直接用.submit()來把網頁上面的form送到後端給cgi去做。
CGI (Common Gateway Interface) <–這網頁解釋CGI好像很厲害。
用了很久其實都不是很了解它的真義,但是就只是把它理解成server端處理事情的代稱。

使用傳統的方法的routing是
1.網頁client端送出 TestForm.submit() 把TestForm裡面的input type資料送到指定的cgi from中。
2.Server CGI被這個Client送出的POST所觸發,執行TestForm相對應的程式碼。
3.CGI做完以後會把資料反應到sever上(如讀寫flash)
4.最後必須重新導向。

主要是第四點比較趣味,因為現在客戶的要求都越來越高。
為了美觀跟使用者的感受,希望不要跳轉就可以達到以前的這種效果。
無論是server重開機,或是server在忙碌的時候,都希望使用者的頁面停留在同一頁上。
這時候的solusion就是JQuery了!

這個api很龐大,其實我也搞不懂這麼多工具我怎麼知道什麼可以用。
但是我想就跟所有的api一樣,用久了看多了也許自然就會有經驗了。

而目前我光用$.get 和 $.post就已經覺得可以把事情做得不錯。

以前需要跳轉才能完成把資料送進server去處理然後在跳轉回來的工作。
現在如果使用$.post就可以偷偷的把form的資料post給cgi的form拉~
$.post(“/goform/formSomeSetting”, $(“#FormId”).serialize(),function(data){ },”text”);
JQ最猛的就是那個篩選器,一開始根本聽不懂什麼叫做篩選器。
簡單來說就是它會去根據ID選擇你指定的物件來做操作。
比方說這邊就是選取這個id叫做FromId的Form來送資料。
.serialize()就更威了,他把這個送出去的資料都自動幫你轉成字串。
所以我在cgi那邊的From收到就是一個字串了~十分感人。
再來最後面依然是call back function
它可以在post成功完成以後去執行你想做的事情。
值得一提的是最後面帶的”text” datatype
標準的API它提供了很多回傳過來的資料型態,我試過沒加text丟回來的是一個document的物件
我也不是很了解,好險轉成text以後我就可以拿到從server那邊return的資料了:D
這樣子很方便的可以指使server去做事情,且做完的結果又可以自動傳回來給client browser知道。
重點也可以實現不跳轉的功能,JQ真的是佛心來著的QQ”

另外一個重點的$.get:
以前直接在index.asp上面使用getInfo (cgi的api,會去Server抓值回來show在網頁上)
缺點是他只能在一開始load完index.asp的時候值就寫進去了。
所以是一個靜態的數值,因為只有一開始load這個頁面的時候才會去問一次server.

但是如果用$.get(“getTestValue.asp”, { NoCache: ts }, function (data) { //DoSomething });
就可以達到動態當你想要的時候再去觸發Server要資料。
getTestValue.asp裡面就只寫了
ts則是為了IE的cache機制,必須要帶給他,避免它懶得送一樣的get request給server
最後的function(data)則是call back function
在這個get的request完成以後,會去執行的funcion
而很猛的是data就是剛剛getTestValue.asp裡面得到的值。

$.get更可以用來測試Server的存活狀態。
像是我們的Server可能為了apply某些東西必須要重開機。
我們可以用
$.get(“testalive.html”, { NoCache: ts }, function (data) {});
來測試看能不能get到testalive.html 這個在server上的資料。
如果可以就代表他已經重開機完成,我們可以進行跳轉的動作,
不然就隨便windows.location,有很高機率會跳出404 not found!

所以post和get就讓我覺得眼冒金星眼花撩亂。
不過JQ還有好多好多好多功能,之前有看過ui特效的。
還有很方便的.click可以用。都把javascript變得好簡單易用!
我想今後應該還會跟他做很久的朋友~

只能說真的是無時無刻是學習阿:D

.html()  .text()  .var() 寫得不錯的參考網站

187 Views


發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *