2017-04-13 11 views
0

は私が、私はDIVを、サイズを取得するために、そこに例を採用しようとしている Web2py: Pass a variable from view to controllerのweb2py:

に私の質問への答えを見つけたと思ったコントローラへのクライアント(ビュー)から値を取得しています最終的に(相対的に定義された)ブラウザウィンドウのサイズに依存します。そうするために、私は、ビュー

<script> 
    var div_size_Value = document.getElementById("model_graph_div").clientWidth; 
    ajax('{{=URL('default', 'my_action', vars=dict(div_size_value=div_size_value))}}', [], ':eval'); 
</script> 

に次のコードを持っていますが、Javascriptをするvar div_size_valueはHTMLヘルパーURLの中にアドレス指定されているので、私はいつも、

NameError: name 'div_size_value' is not defined

エラーが大丈夫であるように思わもらいます。

私の質問は次のとおりです: クライアント(ビュー)からDIVサイズの値を取得するにはどうしたらいいですか?

ありがとうございました!

敬具 クレメンス

答えて

1
ajax('{{=URL('default', 'my_action', vars=dict(div_size_value=div_size_value))}}', 
    [], ':eval'); 

あなたは、PythonとJavascriptを混合しています。 web2pyテンプレートでは、{{...}}テンプレート区切り文字のすべては、HTMLをブラウザに送信する前にサーバ上で実行されるPythonコードです。だから、あなたのコードでは、div_size_valueは、サーバー側のPython環境で利用できるPython変数であると予想されます。 URLクエリ文字列にはJavascript変数が含まれているため、代わりに以下のようにJavascriptを使用してクエリ文字列を作成する必要があります。

ajax('{{=URL('default', 'my_action')}}' + '?div_size_value=' + div_size_value, ...) 
+0

Anthony、 私は少し誇りに思っています。私はすでにHTMLヘルパーがJavascript変数を解決できないという問題を見てきました。しかし、私はちょっと失望しています。私は自分自身で解決策には出ませんでした;-) 私の質問にお世話になりました。私はweb2pyのコードのすべての行をより良くすることを約束します... 私はあなたにハッピーイースターを願っています! よろしくお願いします。 Clemens – Clemens

+0

Anthony、user_signature、timeoutなどのロジックがいくつかあるので、{{= LOAD(...)}}経由でコンポーネント変数に直接JS変数を投稿するオプションがありますか?これが可能であれば、解決策はかなり簡単になります。 お礼 Clemens – Clemens

+0

「jQuery.web2py.component(url、target、timeout、times)」( 'timeout'と' times'引数を使用して、いつでもJavascriptを使用してコンポーネントを読み込みオプション)。 – Anthony