Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.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
Python JSON到Javascript_Javascript_Python - Fatal编程技术网

Python JSON到Javascript

Python JSON到Javascript,javascript,python,Javascript,Python,使用python中的这行代码,我创建了包含多条消息的JSON: notification = [{ 'message': 'This is the homepage', 'username': 'User', 'room': 'Home', 'timestamp': '11:59' }, {

使用python中的这行代码,我创建了包含多条消息的JSON:

notification = [{
                 'message': 'This is the homepage',
                 'username': 'User',
                 'room': 'Home',
                 'timestamp': '11:59' 
                },
                {
                 'message': 'Hello World!',
                 'username': 'User',
                 'room': 'Home',
                 'timestamp': '12:00'
               }]

return render_template("chat.html",  messages = notification)
现在我想打印网页上的所有消息,所以我将所有信息发送到javascript。但当以下脚本的输出返回空字符串时

const message = `{{messages}}`;
console.log(message);

为什么字符串为空?

通知中传递的内容实际上不是JSON,而是Python列表。您需要使用
json.dumps
将其转换为实际的json字符串

然后在JS中,您需要将字符串用引号括起来(单引号最好,因为JSON使用双引号),以便JS在语法上有效。然后,您甚至可以使用Javascript的
JSON.parse
将其转换为JS数组:

const message = '{{messages}}' ;
console.log(JSON.parse(message) );

尝试将通知作为json传递给模板

烧瓶

模板

const message = JSON.parse('{{messages | tojson | safe}}');
console.log(message)

看起来您正在传递一个列表,然后在JS中将其用作字符串。试着换一下,然后把这个瓶子贴上?js代码是否嵌入在html文件中?是的<代码>渲染模板
是一个烧瓶函数。我不知道文件的其余部分。此外,脚本可能嵌入到HTML中。我只是假设它是,我的错。是的,它确实是一个flask函数,脚本嵌入在HTMLCan中,您可以尝试在
{{messages}}
中不使用引号?
const message = JSON.parse('{{messages | tojson | safe}}');
console.log(message)