Передать значение ползунка в функцию маршрута бутылки - PullRequest
1 голос
/ 05 октября 2019

Я пытаюсь запустить код, но одна часть не работает, где мне нужно передать значение из ползунка. Я вижу значение на html-странице, но не могу передать его на inputRange(), где мне нужно выполнить некоторые команды.

Я пытался выделить только код, который работает со слайдером. Не могли бы вы дать мне знать, как передать значение ползунка в val_slide? Спасибо.

Код:

from bottle import route, run, template

IP_ADDRESS = '192.168.0.80'
PORT = 8080

@route('/')
def hello():
    return '<b>Test</b>'

@route('/remote')
def remote():
    return '''<html>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="http://code.jquery.com/mobile/1.4.2/jquery.mobile-1.4.2.min.css">
<script src="http://code.jquery.com/jquery-1.10.2.min.js"></script>
<script src="http://code.jquery.com/mobile/1.4.2/jquery.mobile-1.4.2.min.js"></script>
<script>
$(document).ready(function() {
  $('#inputRange').on('change mouseup', function(){
    var val_slide ='inputRange';
    $.ajax({
      url:  '/remote/inputRange',
      type: 'GET',
      data: {command:val_slide},
    });
  });
});
</script>
<style></style>
</head>
<body>
<div data-role="page">
<div data-role="main" class="ui-content">
<form>
<div style="text-align:center">
<label for="switch">Test</label>
<div class="slidecontainer">
<input id="inputRange" type="range" min="0" max="100" step="1" value="20"  class="slider" name='data'>
<output name="inputRange"/output>
</div>
</form>
</div>
</div>
</body>
</html>'''

@route('/remote/inputRange')
def inputRange():
    print val_slide
    # use val_slide value
    return 'inputRange'

try:
    run(host = IP_ADDRESS, port= PORT)
except(KeyboardInterrupt):
    print('Done!')
    quit()

1 Ответ

2 голосов
/ 05 октября 2019

Для доступа к параметрам запроса из запроса GET необходимо импортировать request и использовать request.query для доступа к значениям по имени:

from bottle import route, request

@route('/remote/inputRange')
def inputRange():
    val_slide = request.query.command
    print(val_slide)
    return val_slide

Я не большой специалист по JavaScript, но, насколько мне известно, для отправки фактического значения (не только статического текста) вам нужно заменить val_slide статическое присвоение текста чтением значения:

var val_slide = this.value;
...