#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;
}
}));