会话变量不会在我的脚本中更新

时间:2013-01-11 19:09:24

标签: javascript ruby-on-rails ruby session

我正在玩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的值被更改(它工作正常,如使用debugguer所见)。因此,当解释javascript代码时,变量的值也应该根据我的期望在客户端更改......但它没有,这是我的问题。

我的猜测是,一旦脚本在浏览器中加载,就会对这段代码<%=@id.to_s%>进行评估,而不是每次调用该函数。

是否有解决方法?

干杯

1 个答案:

答案 0 :(得分:0)

  

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

完全。如果不是这样,你甚至不需要ajax来实现这一目标。

  

是否有解决方法?

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