1

HTML:

<textarea id="edit-message"></textarea>
<button type="button" id="guest-button" class="form-submit">Send</button>

JS:

$('#guest-button').click(function() {
    if (window.sessionStorage){
        sessionStorage.setItem("gbookmsg", $('#edit-message').val())
    }
    setTimeout(function() {
        window.location.replace("http://anti-idol.org/user/login");
    }, 500);
});

$('#edit-message').val(gbookmsg);

我想要实现的是当用户用一些文本填充 textarea 输入然后单击发送按钮时 - 它会将 textarea 的值保存到gbookmsg变量中。然后,当用户被重定向到登录页面时 - 在他成功登录后,他回到这个表单并且 javascript 插入gbookmsg之前填写的输入值。但是当页面重新加载时,我的gbookmsg变量变得未定义。如何保存?谢谢

4

4 回答 4

3

您无法通过全局变量来实现这一点,因为全局变量的范围是在重新加载页面时 DOM 可用时,值将丢失

  1. 您可以使用 cookie

或者

  1. 使用 DOM sessionStoragelocalstorage

    if (window.sessionStorage){
     sessionStorage.setItem("gbookmsg ", $('#edit-message').val()) ;
    }
    

编辑

fiddle为你创造了

  • 第一次运行你会看到一个空白警报

  • 设置值并重新加载页面。

于 2013-05-16T14:43:53.860 回答
1

使用 cookie 来存储变量。

请参阅以下文章,该文章可帮助您使用 JQuery 从 cookie 中存储和检索值: http ://www.sitepoint.com/eat-those-cookies-with-jquery/

于 2013-05-16T14:44:19.417 回答
0

你用的是什么后端?您可以将数据存储到会话(服务器端)或使用查询字符串将值传递到下一页。或者您可以使用 cookie 来存储值

于 2013-05-16T14:43:16.807 回答
0

全局变量只存在于页面,当页面重新加载时,它们会丢失。

您有一些比页面更持久的存储选项:

本地存储

localStorage 是一个在页面加载之间持续存在的对象:

localStorage.cat = 3;
// After a page load:
alert(localStorage.cat) // will alert '3'

饼干

您可以使用 document.cookie 设置一个浏览器 cookie,它会记住该值。

在重定向中传递它

如果您通过登录重定向的每个步骤从输入中传递文本,则可以在页面加载时将其取回。

登录重定向可能如下所示:

http://myawesomedomain.com/login?redirect=http://myawesomedomain.com/contact?message=Hi!

然后在登录后将您重定向到:

http://myawesomedomain.com/contact?message=Hi!

您可以将消息从 get 参数中提取出来。

于 2013-05-16T14:43:40.047 回答