bottle.py : отправка данных через javascript

#javascript #xmlhttprequest #bottle

#javascript #xmlhttprequest #бутылка

Вопрос:

В принципе, я хочу иметь интерактивную кнопку на моем веб-сайте, которая при нажатии отправляет некоторые данные на сервер для проверки и отображения ответа (без отправки формы / перезагрузки страницы).

Я думал, что это будет что-то вроде:

 function checkData()
{
    var req = new XMLHttpRequest();
    var conf = document.getElementById('my_text_area').value;

    req.open("GET", 'check_data', true);
    req.onreadystatechange = function () 
    {
        var pre = document.getElementById('check_data_out');
        pre.innerHTML = req.responseText;
    }

    req.send(conf);
    return false;
}
  

И на стороне сервера:

 @get('/check_data')
def check_data():
    # Process the content and answer something...
    content = str(request.is_ajax)   ' - '   str(request.GET)   ' - '   str(request.POST)
    return content
  

Но это, очевидно, не работает. Либо это неправильный способ отправки данных через javascript, либо неправильный способ доступа к ним в bottle.py .

Я высоко ценю, что вы показали мне, как это работает.

Комментарии:

1. Почему бы не использовать библиотеки javascript, такие как dojo и jquery? В противном случае вам потребуются дополнительные усилия, чтобы преодолеть разницу в AJAX между разными браузерами.

2. Что насчет того, что это не работает? Используйте инструменты разработчика Chrome для проверки запроса / ответа.

3. извините, этот вопрос / проблема теперь слишком старая, и я больше не могу вспомнить подробности об этом.

Ответ №1:

Вы можете использовать dojo для логики на стороне клиента.

 var button = dojo.byId('button_id'); // button_id refers to the id of the button you want to click

dojo.connect(button,'onclick',dojo.xhrGet({
   url: '/check_data',
   handleAs : 'text',
   load : function(response){
       dojo.byId('button_id').innerHTML = response; 
   }
}));