2016-09-02 8 views
0

私はVBコードの中でパラメータを使用する関数を持っており、フロントエンドがgoogle-mapsにマーカーを置くために使用するためにdatatableを出力します。正面から、ユーザーが入力する変数を送信する必要があります。json.parseを通してaspに変数を渡します。

Javascriptを疑似:

if (a = true){ 
    var varName = inputBox.value; 
    var passer1 = chkCondition1(); 
    var passer2 = chkCondition2(); 

    if (passer1 == true && passer2 == true) { 
     Coordinates = JSON.parse('<%=ConvertTabletoString(varName) %>'); 
    } 
else { 
    //do other stuff 
    } 

私はエラーを取得しています:

Error 2 'varName' is not declared. It may be inaccessible due to its protection level.

私はここで何をすべきかわかりません。これを回避する方法はありますか?

+0

'<%= ConvertTableto ... blabla ...%>'の中にはVBでサーバ側が実行されているので、javascriptに存在するvarNameについては何も知らない。 – James

+0

Gotcha。だから私はその変数をバックエンドに渡さなければならないだろう。私は隠されたフィールドでそれを行う方法を見て覚えているが、それはハッキーを感じる、それを行うために受け入れられた方法ですか? – GCQ

+0

mvcの背景からウェブフォームに来る私はまた、隠されたフィールドが奇妙なことをする方法を発見したが、それは私が思うにはかなり受け入れられる。場合によっては、あなたのjavascriptからAJAX呼び出しを使用する方が良いかもしれませんが、それは異なります。隠されたフィールドはあなたがそれを設定した後にサーバー側から読み取られる必要があるでしょう。だから、それはどのように解雇されるのでしょうか?あなたはおそらくあなたのページ上に 'hidden: 'ボタンを必要とするでしょう。あなたのサーバー側のクリックイベントで隠しフィールドを読み込み、次にjavascriptがレスポンスを処理する必要があるでしょうか?だからええ、AJAXの呼び出しは時々簡単になる可能性があります。 – James

答えて

0

問題の原因は、サーバー側で使用する変数がサーバー上に存在しないことです。また、クライアント側に到達する予定の時点でクライアント側に存在しません。基本的にクライアント側で作成されるサーバー上の変数に到達しようとしますが、実際に到達する予定のポイントは基本的にユーザーがブラウザーで何かを見る前です。

  1. ajaxでサーバー側に値を送​​信する必要があります。

  2. あなたが応答JSONをパースあなたajax callbackでは、クライアント側

  3. に必要になりますあなたのコマンドがサーバに到着したときに呼び出されるとJSONを返送されserver-side API functionを必要としています。

  4. 利益。

0

"varName"はクライアント側の変数です。そのため、そのエラーが発生します。

"inputBox"がサーバーコントロールの場合は、ConvertTabletoString()メソッドからその値に直接アクセスできます。

そうでない場合は、runat = "server"で非表示フィールドを使用し、inputBox.valueを割り当てます。したがって、サーバーメソッドから隠しフィールドの値にアクセスすることができます。

関連する問題