[修練營 jQuery]使用contactable達到在頁面上寄送feedback mail給管理者

  • 15618
  • 0

[修練營 jQuery]使用contactable達到在頁面上寄送feedback mail給管理者

前言

我們常常有個需求,是類似提供客服信箱的功能,讓使用者可以很方便的將寶貴的意見feedback給站方管理者。

最常看到的就是,在menu或是頁面的footer上,加上一個客服信箱的連結,
或是自己寫一個表單,可以幫忙寄送相關資訊給站方。

沒錯,現在jQuery也有類似這樣的plug-in,而且真的相當漂亮,還搭配動畫讓頁面表現的更生動。

這邊我要介紹的plug-in叫做「contactable」,目的就是在頁面上安插一個表單,類似用書籤夾著的效果,
點一下就會像把書籤抽出來的效果,這邊就可以安插自己想要的表單,來做表單送出的動作。

而我這邊表單的動作是寄送mail給管理者。

 

Solution

原文網址參考:Contactable – A jQuery Plugin
原文demo頁面:http://www.theodin.co.uk/tools/tutorials/jqueryTutorial/plugins/contactable/?

由於原本的sample code是使用jQuery的ajax功能,呼叫php來寄送mail,
我這邊要改寫成ASP.NET的方式來處理。

簡單歸納一下,在這篇文章裡面,預計使用到的觀念

  1. jQuery plug-in的使用與修改
  2. 透過jQuery與ajax,呼叫Web Service
  3. 在ASP.NET裡面寄送Mail
  4. javascript呼叫webservice的method,之間傳遞的訊息為JSON格式,使用序列化與反序列化來將字串物件化。
  5. Server端反序列化JSON後,使用Dictionary來查Key-Value
  6. jQuery Validate(用來處理表單驗證,這邊只要看的懂code在幹嘛,會修改限制條件即可)


這些東西,說真的有點不好意思,我一個都沒寫過,所以這一篇文章當時練習得有點痛苦,
加上CSS的效果在FireFox與IE效果還不一樣,整個過程跟滾天堂路差不多。

這邊也附上幾個我參考的文章供大家參考一下:


小的這邊,主要就是把這幾個東西組合在一起而已,接下來讓我們一起來玩耍吧。

 

Play it

首先我們可以先到原文網頁去下載我們需要的sample code與需要的檔案,下載網址:http://www.theodin.co.uk/tools/tutorials/jqueryTutorial/plugins/contactable/contactable.zip

先在我們的網站,建一個images的folder,裡面放著ajax-loader.gif與contact.png(feedback的那張圖),這樣等等css裡面路徑就不用改啦。

接著我們需要的檔案有:

  1. contactable.css
  2. jquery.contactable.js
  3. jquery.validate.pack.js


有了這三個檔,基本上就完成一半了。這邊先介紹一下各個檔客製化時,可能需要修改的部分。


contactable.css

css


我們把重頭戲jquery.contactable.js放在最後面,我們先來看.aspx長怎樣,這邊因為要使用序列化,所以引用了ScriptManager

aspx

為了證明我的書籤即使出現捲軸,也都可以固定在一樣的位置(類似ajax control toolkit的always visible extender),
所以我很無聊的在pageload裡面,印出來0~149,讓我的頁面變長有捲軸。

.aspx.cs


    protected void Page_Load(object sender, EventArgs e)
    {
        string a = string.Empty;
        for (int i = 0; i < 150; i++)
        {
            a += i.ToString() + "<br/>";
        }
        this.Label1.Text = a;
    }

 

 

 

好,接著是我們要透過Web Service來送mail的method。這邊新增了一個mail.asmx,我們把method叫做SendFeedbackMailbyJson()。

webservice_mail


最後,我們就是要來修改jquery.contactable.js,透過jQuery呼叫我們寫好的Web service。

這邊只解釋一下重要的區塊,也就是之後客製化比較需要動到的地方。
 

首先是表單的部分,這裡是用hard-code寫死的html畫出一張form:

contact_form


動畫參數調整的部分,我在這就不提了,反正看到一堆數字,就是可以調整的部分。


接著是validate與ajax呼叫Web Service寄送Mail的部分:

contactable_js

 

其實要改的部分很少,只有呼叫web service的部分要改一下,
還有使用JSON的方式傳遞資料,跟sample code上的不一樣。

我們來看一下畫面,一開始的畫面,我把頁面scroll bar拉到中間:

page_1

 

當我們點了Feedback的按鈕時(它真的長的很像書籤啊.....),就會像把表單拉出來一樣。

page_2


當我們輸入的值格式不符合時,按下SEND按鈕,畫面會變成這樣(一看這麼漂亮的顏色,就知道CSS不是我設計的 ):

validate

 

寄送成功的結果:

success


最後我們來去看看Mail有沒收進來:

mail 

結論

透過這個WorkShop,讓我練習到很多很基本又很有用的技巧,

也希望可以對大家有幫助,In 91 it !!


Sample Code:contactable.rar


blog 與課程更新內容,請前往新站位置:http://tdd.best/