有沒有一種方法可以跟蹤人們什麼時候退出表單。如果表單長度爲10個字段,並且他們開始輸入數據,然後決定不提交一半,那麼是否有辦法捕獲他們已經輸入的數據,以瞭解他們何時以及爲什麼沒有提交數據,提交?當人們退出網絡表單時跟蹤
非常感謝
有沒有一種方法可以跟蹤人們什麼時候退出表單。如果表單長度爲10個字段,並且他們開始輸入數據,然後決定不提交一半,那麼是否有辦法捕獲他們已經輸入的數據,以瞭解他們何時以及爲什麼沒有提交數據,提交?當人們退出網絡表單時跟蹤
非常感謝
是的。當然,還有一種方法:)
基本上,您將希望在某個時候檢查表單以查看是否有任何數據需要捕獲。當用戶離開頁面時,甚至每次按下某個鍵時,都可以這樣做 - 這取決於您,以及您希望得到多麼詳細。
我會做的是序列化表單,並將其傳遞(通過ajax)到適當處理數據的Web服務。
這是一個如何序列化和傳遞數據的快速示例。在這個例子中,我傳遞的表單的ID爲「mainForm」,而我的web服務是一個名爲「makeList.php」的本地文件,它查找$ _REQUST ['j']以獲取傳遞的表單數據。
function makeList(){
var r= getXmlObject();
var json=$.toJSON($('#mainForm').serializeObject());
var url= 'makeList.php?j=' + encodeURIComponent(json);
if (r.readyState == 4 || r.readyState == 0) {
r.open("POST", url, true);
r.onreadystatechange = function(){
//do stuff when the ajax request is finished being received.
}
r.send(null);
}
}
function getXmlObject() {
if (window.XMLHttpRequest) {
return new XMLHttpRequest();
} else if(window.ActiveXObject) {
return new ActiveXObject("Microsoft.XMLHTTP");
} else {
alert('Status: Cound not create XmlHttpRequest Object. Consider upgrading your browser.');
}
}
$.fn.serializeObject = function()
{
var o = {};
var a = this.serializeArray();
$.each(a, function() {
if (o[this.name]) {
if (!o[this.name].push) {
o[this.name] = [o[this.name]];
}
o[this.name].push(this.value || '');
} else {
o[this.name] = this.value || '';
}
});
return o;
};
您可以運行在序列化的形式,使一個AJAX請求onunload
事件處理函數。沒有保證這將適用於每個瀏覽器(特別是如果用戶強制退出瀏覽器或計算機凍結等),但在大多數情況下,它將是獲取數據庫中數據的最簡單方法。
當然,您可以使用JavaScript事件和AJAX調用。即使用戶離開瀏覽器也能正常工作。
將數據Ajax發送到服務器,每個文本字段上的數據爲onchange
。
要做的一件事可能是將他們的數據保存在cookie中,爲了他們自己的利益,如果他們離開網站並回來。這可以使用例如。 http://code.google.com/p/cacheform/。這將增加可用性。
確實需要一些編碼來收集,彙總和可視化您提到的數據。現場時間,轉換率,平均輸入長度或每場的退出率等都是網頁形式可用性以及要在表單中保留或刪除的內容的超級有用指標。
我爲此向客戶端投了一個外部工具,花了我五分鐘的時間來實現。我用Form Analytics。還有可能對你有用的clicktail.com。
謝謝道奇,我會接受你所說的,並給它一個去。 – 2010-08-26 22:00:34
爲什麼不使用'$ .post()'有一個很好的理由嗎?實際上,整個代碼可以被壓縮成'$ .post('makelist.php',$('#mainform')。serialize())'。 – 2012-12-01 03:00:44
不,沒有理由。這段代碼現在已經很老了,很可能在我學習jQuery的階段發佈。 – Dutchie432 2012-12-01 11:43:48