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 さえ必要ないでしょう。

そのための回避策はありますか?

これを行う適切な方法は、必要なデータをサーバー側から渡し、js でonreadystatechangeイベント ハンドラー (既に使用しているようです) からアクセスすることです。サーバーの応答は、 で文字列として入手できますxmlhttp.responseText

于 2013-01-11T19:27:01.330 に答える