2011-01-30 72 views
0

我使用以下...JavaScript的序列化問題

// (jquery/pseudo code) 
var base = $('form[name="gs"]').attr('action'); 
var params = $('form[name="gs"]').serialize(); 
var url = base + '?' + params; 

我有,當按下一個鍵調用該函數的偵聽器。它在搜索欄中抓取查詢。但是,如果在搜索框中輸入更多的內容,並且它已經執行一次,則返回未定義的結果。我將如何解決這個問題?

回答

0

聲明函數外全局變量:

var globalBase, globalParams; 

則緩衝值初始時間,並相應地更新它們:

globalBase = (globalBase === void(0)) ? 
       $('form[name="gs"]').attr('action') : 
       globalBase; 
globalParams = (globalParams === void(0)) ? 
       $('form[name="gs"]').serialize() : 
       globalParams; 
var url  = globalBase + '?' + globalParams; 

如果您需要根據什麼是更新基礎或PARAMS在鍵盤上鍵入,然後你可以用$(yourInput).val()等東西來替換else語句。

+2

`globalBase === void 0`是一個更好的檢查。 – Raynos 2011-01-30 15:05:52