2017-02-05 1 views
0

나는 Webpy를 처음 사용합니다. 현재 Dropdown 메뉴에서 선택한 항목을 검색하는 데 어려움이 있으며 어떤 도움도받지 못했습니다. 누구든지 문제를 해결하는 방법을 보여줄 수 있습니까?Webpy 드롭 다운에서 선택한 항목을 얻는 방법

감사

내 파이썬 서버

:

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

내가 선택한 것은 인쇄물이 아닙니다. –

답변

0

당신은 너무 노력하고 있습니다 :

파이썬 코드가 좋다. 귀하의 HTML은 괜찮지 만 내장 JavaScript가 문제입니다.

특히 var input_string = ...에 대한 전화는 좋지 않으며 불필요합니다. ID가 textfield 인 입력 요소가 없습니다. 아무리해도 필요하지 않습니다.

ajax 호출에서 잘못된 데이터, 즉 textfield 값을 보냈습니다. 대신, 양식을 serialize하고 해당 정보를 보내주십시오. :

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

고맙습니다. 나는 그것에 시간을 보내고 있었다. 한 번만 더 질문합니다. 지금까지 여러 항목을 선택했다면 파이썬 스크립트에서만 하나를 얻었습니다. 드롭 다운에서 입력 배열을 가져올 수 있습니까? –

+0

@NanMa 솔직히 말하자면, 나는 문제의 가치가없는'Form' 코드를 찾았습니다. 직접 작성하십시오. Form.Dropdown은 단일 항목 만 지원합니다. 문서는 "목록에 대한 상호 배타적 인 입력 (선택 및 옵션)"이라고 말합니다. 그러나 브라우저는 여러 개의 결과를 보내고 POST에서는 읽을 수 있지만'device_list = web.input (Devices = []). Devices'와 같은 것을 사용해야합니다. 'web.input()'은 항상 사용자 입력을 반환합니다. 'Devices = []'라고 말하면'web.input()'에게 Devices는 싱글 톤 이라기보다는리스트 타입이라고 말하고 있습니다. 붙박이 Dropdown validator가리스트와 올바르게 동작할지 어떨지는 모른다. – pbuck

+0

코멘트 주셔서 감사합니다. 그게 내가 지난 밤에 한 일 이었어. 나는 Python에서 Dropdown을 주석 처리하고 HTML에서 그것을 수행했다. 앞으로 나아 가기 위해, 웹에 좋은 다른 좋은 파이썬 프레임 워크를 알고 있습니까? 내가 picker webpy를 사용하는 이유는 내가 파이썬으로 작성된 백엔드 처리의 상당 부분을 가지고 있기 때문입니다. 고맙습니다. –

관련 문제