84669 person learning
152542 person learning
20005 person learning
5487 person learning
7821 person learning
359900 person learning
3350 person learning
180660 person learning
48569 person learning
18603 person learning
40936 person learning
1549 person learning
1183 person learning
32909 person learning
背景:
页面有多个表单,我需要在提交每个表单的时候,将其对应的id属性存入cookie中。使用1.9.1版本的jQuery,现在我需要监听页面表单的提交事件。
此时能不能这样:
直接监听事件,回调函数为设置cookie的操作。这样是否安全呢?跳转是否先于事件完成呢?中间的过程不是很清晰,希望得到大家的帮助。
或者是必须要取消浏览器的默认跳转,在回调函数的内部末尾通过location.href进行跳转呢?
对于这些有些纠结,很希望得到大家的帮助
ringa_lee
可以直接写 cookie,你想:阻止默认事件行为也是要写在回调函数里的,如果无法保证先于默认行为执行,怎么能保证阻止成功呢?
但是回调函数里的异步处理操作是无法保证的,写 cookie 则不在此例。
顺便一提,如果用户禁用了 cookie 怎么办?(虽然很罕见)我觉得更好的办法是在提交时往 URL 上拼接一个 query params(比如你的 ID),通过监听 location 的变化来处理这件事情。这也是现代 JavaScript 应用程序客户端路由常用的方式。
又或者表单的提交改为 Ajax 请求,直接禁用默认的提交事件,此时页面是不会刷新的,你可以保证在提交成功之后记录表单 ID,这样会更健壮一些。
可以直接写 cookie,你想:阻止默认事件行为也是要写在回调函数里的,如果无法保证先于默认行为执行,怎么能保证阻止成功呢?
但是回调函数里的异步处理操作是无法保证的,写 cookie 则不在此例。
顺便一提,如果用户禁用了 cookie 怎么办?(虽然很罕见)我觉得更好的办法是在提交时往 URL 上拼接一个 query params(比如你的 ID),通过监听 location 的变化来处理这件事情。这也是现代 JavaScript 应用程序客户端路由常用的方式。
又或者表单的提交改为 Ajax 请求,直接禁用默认的提交事件,此时页面是不会刷新的,你可以保证在提交成功之后记录表单 ID,这样会更健壮一些。