【问题标题】:Session variable does not update in my script会话变量未在我的脚本中更新
【发布时间】:2012-12-26 10:33:40
【问题描述】:

我在玩javascript,在这里遇到了一个奇怪的问题。我在服务器端使用 Ruby on Rails。

这是我想要动态化的 HTML 部分:

<div id="pic">
  <img src="https://graph.facebook.com/<%=@id.to_s%>/picture?type=large">
</div>

这是我的 AJAX 请求的事件onreadystatechange 引发时调用的代码:

if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
  alert(<%=@id.to_s%>);
  document.getElementById("pic").innerHTML = "<img src=\"https://graph.facebook.com/<%=@id.to_s%>/picture?type=large\">";
}

基本上,我的请求是在服务器端处理的,变量@id 的值被更改(它工作正常,如使用调试器所见)。因此,当解释 javascript 代码时,变量的值也应该根据我的期望在客户端发生变化......但它没有,这是我的问题。

我的猜测是,这段代码&lt;%=@id.to_s%&gt; 会在脚本加载到浏览器后进行评估,而不是每次调用函数时。

有解决办法吗?

干杯

【问题讨论】:

    标签: javascript ruby-on-rails ruby session


    【解决方案1】:

    我的猜测是,一旦脚本在浏览器中加载,这段代码 就会被评估,而不是每次调用函数时。

    没错。如果不是这样,你甚至不需要 ajax 来完成它。

    有解决办法吗?

    正确的方法是从服务器端传递您需要的任何数据,然后在您的 js 上从 onreadystatechange 事件处理程序(您似乎已经在使用)访问它。服务器响应将在xmlhttp.responseText 处以字符串形式提供。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-02-08
      • 2018-02-06
      • 1970-01-01
      • 1970-01-01
      • 2014-07-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多