2017-02-05 18 views
0

私はWebpyを初めて使用しています。現在、ドロップダウンメニューで選択した項目を取得するのに問題があり、ヘルプが表示されていません。誰も私に問題の解決方法を教えてもらえますか?Webpyドロップダウンから選択項目を取得する方法

おかげ

私のpythonサーバー:

import web 
import pdb 
from matching_tester import * 

def make_text(string): 
    return string 

class tutorial: 
    def GET(self): 
     form = my_form() 
     return render.tutorial(my_form(), "Your text goes here.") 
    def POST(self): 
     form = my_form() 
     form.validates() 
     s = form.d.Devices 
     print s 
     return make_text(s) 

if __name__ == '__main__': 
    urls = ('/', 'tutorial') 
    render = web.template.render('templates/') 

    app = web.application(urls, globals()) 

    my_form = web.form.Form(
        web.form.Dropdown('Devices', [('1', 'iPhone 4'), 
                ('2', 'iPhone 4S'), 
                ('3', 'iPhone 5')], 
                web.form.notnull, 
             **{'multiple':None, 'size': 4}), 
        web.form.Dropdown('Country', [('1', 'All'), 
                ('2', 'US'), 
                ('3', 'JP')],   
               web.form.notnull, 
             **{'multiple':None, 'size': 4}) 
        ) 
    app.run() 

マイHTML:あなたはあまりにもハード作業している

=== tutorial.html === 
$def with (form, text) 
<!doctype html> 
<html> 
    <head> 
     <title>Python and AJAX tutorial for beginners with webpy and jQuery</title> 
     <link rel="stylesheet" type="text/css" href="/static/tutorial.css" /> 
     <script type="text/javascript" src="/static/jquery.js"></script> 
     <script type="text/javascript"> 
           jQuery(document).ready(function() { 
           jQuery(".button").click(function() { 
             var input_string = $$("input#textfield").val(); 
             jQuery.ajax({ 
               type: "POST", 
               data: {textfield : input_string}, 
               success: function(data) {             jQuery('#foo').html(data).hide().fadeIn(1500); 
               }, 

               }); 
             return false; 
             }); 
           }); 
         </script> 
    </head> 
    <body> 
     <br> 
     <form class="form" method="post"> 
     $:form.render() 
     <input class="button" type="submit" value="send"/> 
     </form> 
     <br><br> 
     <span id="foo">$text</span> 
</form> 
    </body> 
</html> 
+0

に関係なく、私が選択した内容、sはどうもありがとうございまし –

答えて

0

をあなたのPythonコードが良いです。あなたのHTMLは大丈夫ですが、埋め込まれたJavaScriptが問題です。

具体的には、var input_string = ...への電話は悪い(不要)。 ID textfieldの入力要素がありません。それは必要ではありません。

あなたのajax呼び出しでは、textfieldの値である不良データを送信しています。代わりに、単にフォームをシリアル化し、その情報を送信:

jQuery.ajax({ 
    type: "POST", 
    data: jQuery('form').serialize(), // <-- Here 
    success: function (data) { 
     jQUery('#foo').html(data).hide().fadeIn(1500); 
    }, 
}); 
+0

Noneを与えないだろう印刷しません。私はそれに時間を費やしていた。もう1つの質問。 これまで、複数のエントリを選択した場合、私はpythonスクリプトで1つしか取得できませんでした。ドロップダウンからどのように入力を取得できますか? –

+0

@NanMa正直なところ、「Form」コードは問題のない価値があると思います。自分で書いてください。 Form.Dropdownは単一エントリのみをサポートします。ドキュメントは、「リストの相互排他的な入力(選択とオプション)」と言っています。しかし、ブラウザは複数の結果を送信し、POSTでそれらを読むことができますが、 'device_list = web.input(Devices = [])。Devices'のようなものを使う必要があります。 'web.input()'は常にユーザー入力を返します。 'Devices = []'と言うことによって、 'web.input()'に、Devicesはシングルトンではなくリスト型であると伝えます。組み込みのドロップダウンバリデーターがリストで正しく動作するかどうかはわかりません。 – pbuck

+0

コメントありがとうございました。それはまさに私が最後の夜したことでした。私はPythonからDropdownをコメントアウトし、HTMLでそれを行いました。 今後は、ウェブに適した他の優れたPythonフレームワークもご存知ですか?私がpicker webpyを使用したのは、バックエンド処理の大部分がPythonで書かれているからです。 ありがとうございました –

関連する問題