Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/287.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
web2py:如何将python数组复制到javascript数组中_Javascript_Python_Arrays_Communication_Web2py - Fatal编程技术网

web2py:如何将python数组复制到javascript数组中

web2py:如何将python数组复制到javascript数组中,javascript,python,arrays,communication,web2py,Javascript,Python,Arrays,Communication,Web2py,我目前遇到了一个问题,就是如何让javascript和python在web2py中进行通信 控制器: def testDB(): a=[] a.append('a') a.append('b') a.append('c') return dict(m=a) (最终将替换为一个DB行数组) 目前,我正在尝试将m中的值分配给javascript中的数组。我试过几种方法: var t="{{=m}}"; 返回大约43个

我目前遇到了一个问题,就是如何让javascript和python在web2py中进行通信

控制器:

def testDB():
        a=[]
        a.append('a')
        a.append('b')
        a.append('c')
        return dict(m=a)
(最终将替换为一个DB行数组) 目前,我正在尝试将m中的值分配给javascript中的数组。我试过几种方法:

var t="{{=m}}";
返回大约43个无意义的字符。然后我试着:

var t= new Array(); var i=0;"{{q=0}}"
"{{i=len(message)}}"
i="{{=i}}";
for(q=0;q<i;q++,"{{q=q+1}}"){
t[q]="{{m[q]}}";
}
var t=newarray();var i=0;“{{q=0}}”
“{i=len(message)}”
i=“{{=i}}”;
对于(q=0;q使用模块:

在web2py(或任何服务器端模板语言)中,您不能像以前那样将服务器端Python代码与客户端Javascript代码混合使用。请求页面时,会计算web2py视图中的Python,并生成纯HTML页面(包括Javascript代码)生成并返回到浏览器。浏览器不获取任何Python代码,并且无法混合执行Javascript和Python

web2py视图仅在您有
{{{=some_value}}
时才将文本/代码插入页面(注意等号)
无效。如果要查看浏览器从web2py接收到的内容,请查看浏览器中的页面源代码——它将显示视图生成的HTML/Javascript的最终结果

对于您的特定问题,您可以使用
response.json()
将Python列表转换为json对象。但是,如果您在视图中按原样包含该列表,它将转义所有引号,因此您必须将其传递给以避免转义。类似于以下内容:

var t = {{=XML(response.json(m))}}
不适用于web2py 2.9.12或更高版本

要将python变量值分配给javascript变量,首先在控制器中将其转换为json,然后传递给视图 在视图中,使用
XML()

控制器

from gluon.serializers import json

def index():
    array = [1, 2, 3, 4, 5]
    dictionary = dict(id=1, name='foo')
    return dict(array=json(array), dictionary=json(dictionary))
def index():
    array = [1, 2, 3, 4, 5]
    dictionary = dict(id=1, name='foo')
    return dict(array=array, dictionary=dictionary)
看法

看法


{{=ASSIGNJS(js_array=array)}
{{=ASSIGNJS(js_dictionary=dictionary)}

如何使用它将m的值放入javascript数组?
json.dumps(py\u列表)
将为您提供一个JSON数组。将其传递到浏览器。这对web2py不起作用。很抱歉,认识到这是一个旧线程。我觉得我应该提及它。我一直在尝试同样的事情,您在视图中得到的是
而不是JSON字符串中的引号。谢谢,这非常有效。现在我必须:了解如何让它接受DB rows1plus,以提及ASSIGNJS helper
from gluon.serializers import json

def index():
    array = [1, 2, 3, 4, 5]
    dictionary = dict(id=1, name='foo')
    return dict(array=json(array), dictionary=json(dictionary))
<script>
    var js_array = {{=XML(array)}};
    var js_dictionary = {{=XML(dictionary)}};
</script>
def index():
    array = [1, 2, 3, 4, 5]
    dictionary = dict(id=1, name='foo')
    return dict(array=array, dictionary=dictionary)
<script>
    {{=ASSIGNJS(js_array = array)}}
    {{=ASSIGNJS(js_dictionary = dictionary)}}
</script>