2013-01-11 49 views
0

我正在玩JavaScript,我在这里遇到了一个奇怪的问题。我在服务器端使用Ruby on Rails。会话变量不会在我的脚本中更新

这里是我想成为动态HTML部分:

<div id="pic"> 
    <img src="https://graph.facebook.com/<%[email protected]_s%>/picture?type=large"> 
</div> 

这是当我的AJAX请求的情况下onreadystatechange引发调用的代码:

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

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

我的猜测是这个代码<%[email protected]_s%>是在脚本加载到浏览器中后进行评估的,而不是每次调用该函数。

有没有解决方法?

干杯

回答

0

我猜这里是一旦脚本在浏览器中每个函数被调用时加载的,而不是代码<%= @ id.to_s%>该位进行评估。

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

有没有解决方法?

正确的方式做到这一点是通过从服务器端需要的任何数据,然后访问它从onreadystatechange事件处理您的JS(你似乎已经被使用)。服务器响应将以xmlhttp.responseText的字符串形式提供。