0

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

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

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

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

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 代码时,变量的值也应该根据我的期望在客户端发生变化......但它没有,这是我的问题。

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

有解决方法吗?

干杯

4

1 回答 1

0

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

确切地。如果不是这种情况,你甚至不需要 ajax 来完成它。

有解决方法吗?

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

于 2013-01-11T19:27:01.330 回答