我正在玩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%>
进行评估,而不是每次调用该函数。
是否有解决方法?
干杯
答案 0 :(得分:0)
我的猜测是这段代码&lt;%= @ id.to_s%&gt;在浏览器中加载脚本后评估,而不是每次调用函数时都会评估。
完全。如果不是这样,你甚至不需要ajax来实现这一目标。
是否有解决方法?
这样做的正确方法是从服务器端传递您需要的任何数据,然后从onreadystatechange
事件处理程序(您似乎正在使用)访问js上的数据。服务器响应将在xmlhttp.responseText
处以字符串形式提供。