#python #web2py
#python #web2py
Вопрос:
Я пытаюсь использовать AJAX с языком web2py, но у меня проблема, мой код:
javascript
$(document).ready(function(){
$(".className").click(function(){
jQuery.ajax({
type:'POST',
url:'getName',
data:{
itemName:'a'
},
timeout: 20000,
success: function(msg) {
alert(msg);
},
error: function(objAJAXRequest, strError){
alert( "Error:" strError );
}
});
});
default.py
def getName():
itemName=request.vars.itemName
return "Name: " itemName
Дело в том, что я хочу использовать данные из базы данных, но возможно ли использовать
{{for item in tableName:}}
var name={{=item.name}}
вот так?
Я не уверен, как извлечь данные из базы данных в javascript. Можете ли вы мне немного помочь? Приветствия
Комментарии:
1. Непонятно, что вы пытаетесь сделать. Предполагается ли, что getName возвращает строку или код Javascript? Куда вы хотите поместить
{{for item in tableName}}
? Что такоеitem.name
?2. Я хочу вернуть переменную name, которая является строкой. и я хочу поместить {{for ….}} в javascript до того, как будет найден ItemName:. Наконец item.name для всех имен в поле name. Возможно ли это?? если это не так, есть ли какая-либо альтернатива?
3. Извините, все еще не совсем понимаю. Возможно, откройте это в списке рассылки и покажите еще немного кода. Вы можете использовать представления web2py для генерации JS, но это должно быть сделано на стороне сервера — вы не можете смешивать код шаблона web2py с JS, который выполняется на стороне клиента (браузер не будет знать, что с ним делать).
Ответ №1:
Короткий ответ заключается в том, что вы не можете напрямую извлекать данные из базы данных в javascript с помощью web2py. Вы должны запросить базу данных с помощью web2py, а затем использовать web2py для отправки данных вашего запроса в javascript (или, точнее, поскольку вы используете ajax, используйте jquery / javascript для извлечения данных вашего запроса из web2py). Убедитесь, что вам действительно нужно выполнить логику на стороне клиента (javascript) здесь, потому что проще всего было бы выполнить всю вашу логику на python в контроллере web2py.
Однако, если вам по какой-то причине необходимо выполнить логику над вашими данными на стороне клиента, то вы на правильном пути. Проще всего для вас было бы извлечь нужные вам записи из базы данных в контроллере web2py, затем упаковать записи в виде объекта json в вашем контроллере web2py («import simplejson» или вы можете сделать это с помощью стандартной библиотеки с последней версией python), затем вернуть этот объект json, чтобы сделать его доступным для вашего js для извлечения с помощью запроса ajax, который вы включили выше. Только в этот момент вы должны выполнить цикл через объект json, используя javascript, чтобы получить нужные вам данные.
Тем не менее, если вы просто пытаетесь получить поле из одной записи из базы данных, проще всего было бы просто правильно запросить базу данных, чтобы получить эту запись, и вернуть ее в контроллер web2py для получения вашего ajax-скрипта.