2011-10-17 47 views
1

我试图使用AJAX与web2py的语言,但我有一个问题 我的代码是:是否可以在JavaScript文件(.js)中使用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中从数据库提取数据。 你能帮我一下吗? 干杯

+0

目前尚不清楚你想要做什么。 getName应该返回一个字符串或Javascript代码?你想把“{{for item in tableName}}”放在哪里?什么是'item.name'? – Anthony 2011-10-17 15:26:48

+0

我想返回一个字符串的名称变量。 ,并且我希望在itemName:位于{}之前将{{for ....}}放入javascript中。最后,item.name用于名称字段中的所有名称。 可能吗?如果不是,有没有其他选择? – 2011-10-17 15:37:11

+0

对不起,还是不太明白。也许在[邮件列表](https://groups.google.com/forum/?fromgroups&pli=1#!forum/web2py)上打开它并显示更多代码。您可以使用web2py视图来生成JS,但必须在服务器端完成 - 您不能将web2py模板代码与客户端运行的JS混合(浏览器不知道该如何处理它)。 – Anthony 2011-10-17 16:14:13

回答

1

简短的回答是,你不能直接从JavaScript中使用web2py在数据库中提取数据。你必须使用web2py查询数据库,然后使用web2py将你的查询数据发送给javascript(或者更准确地说,因为你使用的是Ajax,使用jquery/javascript从web2py下拉查询数据)。确保你确实需要在客户端(javascript)端执行逻辑,因为最简单的事情就是在web2py控制器中执行python中的所有逻辑。

但是,如果您出于某种原因需要在客户端对您的数据执行逻辑,那么您正处于正确的轨道上。最简单的做法是从web2py控制器中的数据库获取所需的记录,然后将记录打包为web2py控制器中的json对象(“import simplejson”),或者您可以使用标准库最新版本的python),然后返回该json对象,使其可供您的js使用上面包含的ajax请求获取。只有在这一点上,你应该使用javascript循环访问json对象以获取所需的数据。这就是说,如果你只是想从数据库的单个记录中获取一个字段,最简单的事情就是正确地查询数据库以获取该记录,并将其返回到web2py控制器中为你的ajax脚本得到。

相关问题