4

我需要从 python 2.7 的服务器端获取一个列表到 javascript 的前端来打印它们。有没有办法做到这一点?我试图通过“self.response.out.write(my_list)”传递列表。

import webapp2
import jinja2
import os
import logging
from google.appengine.ext import db
import random
from google.appengine.api import users
jinja_environment = jinja2.Environment(
    loader=jinja2.FileSystemLoader(os.path.dirname(__file__) + '/template'))

class MainPage(webapp2.RequestHandler):
    def get(self):
      # Print webpage
      template_values = {}
      template = jinja_environment.get_template('index.html')
      self.response.out.write(template.render(template_values))

    def post(self):
      my_list = ['one', 'two', 'three', 'four']
      self.response.out.write(my_list)


app = webapp2.WSGIApplication([('/', MainPage),],debug=True)

Javascript 代码循环遍历列表并在控制台中打印它们。

function refresh(e) {
    console.log('Refresh.');
    addNewWord();
}

function addNewWord() {
    console.log('Add new words');
    $.ajax('/',{
        type: 'POST',
        data: {

        },
        success: handleResponse
    });
}

function handleResponse(data) {
    console.log('Got from server:' + data);
    for (var i = 0; i <data.length; i++) {
        console.log(data[i]);
    }
}

$(document).ready(function() {
    $('#refreshButton').click(refresh);
});
4

1 回答 1

1

使用 JavaScript 发送和处理列表或 Python 对象的最佳方式是发送 JSON。你可以json.dumps在你的python代码中使用

import json
....

my_list = ['one', 'two', 'three', 'four']
self.response.write(json.dumps(my_list)

现在您收到一个 JSON 字符串。但是使用 jQuery 它会给你一个 JavaScript 对象。有关详细信息,请参阅 jQuery:http: //api.jquery.com/jQuery.getJSON/

如果您不使用 JSON,则可以使用字符串发送列表:

my_list = ['one', 'two', 'three', 'four']
self.response.write(','.join(my_list))
于 2013-02-10T15:47:26.977 回答