2011-01-30 67 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