1

私は次のことをしようとしています:

   <script>
      var documentId = %(this).attr('id');

      <% int docId = %>documentId<%;%>

   </script>

ご覧のとおり、新しいサーバー変数を作成しようとしていますが、javascript変数の値を割り当てています。または、少なくともjavascript変数を評価してもらいます。(これは私が解決しようとしている現実世界の問題の単純化された例です)これを行うことができる方法はありますか?

4

5 に答える 5

4

問題:

  1. サーバー側のコードは、クライアントに何かが送信される前に、サーバー上で評価されます。
  2. クライアント側のコード (JavaScript) は、サーバーがドキュメントの送信を終了した後、ブラウザーで評価されます。

上記のステートメントを理解すると、現在の例が技術的に不可能であることがわかります。

(ページの更新を防止することが目的の場合) 必要なことは、AJAX を使用してサーバー上のスクリプトに新しいデータを送信することです。スクリプトはデータを処理し、ブラウザに応答します。

于 2011-01-31T16:08:28.867 に答える
0

オブジェクトに @id を与えるのはサーバー コードであるため、サーバーは作成時にそれを認識している必要があります。しかし、いいえ、クライアントとサーバーをそのようにインターリーブすることはできません-それらは時間と地理的にばらばらに実行されます

于 2011-01-31T16:08:54.493 に答える
0

サーバー変数はすでに計算されており、クライアント スクリプトが実行されるまでに HTML が生成されているため、これを行うことはできません。

サーバー側コードの実行 => ブラウザに提供される生成された HTML ファイル => Javascript コードの実行

このプロセスは一方向であるため、Ajax リクエストを使用せずにその変数を返す方法はありません。

ただし、ID だけが必要で、コントロールが .NET コントロールである場合は、単純に myControl.ClientID 値を使用できます。

于 2011-01-31T16:08:55.070 に答える
0

ブラウザからサーバーにデータを送信するには、フォーム コントロール (テキスト フィールド、非表示フィールド、テキストエリア、チェックボックスなど) または ajax を使用する必要があります。あなたの場合、javascript オブジェクトを文字列にシリアル化し、隠しフィールドまたは XmlHttpRequest を介してサーバーに渡すことができます。

于 2011-01-31T16:16:10.847 に答える
0

ページがレンダリングされる前に、サーバー コードが最初に処理されます。したがって、AJAX などを使用して JavaScript 値をサーバーに戻す必要があります。

于 2011-01-31T16:08:07.840 に答える