2013-02-10 1 views
4

Мне нужно получить список с serveride в python 2.7 в интерфейсе в javascript для их печати. Есть ли способ сделать это? Я попытался передать список через «self.response.out.write (my_list)».Получить список с сервера и распечатать каждый элемент, окруженный тегом span

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); 
}); 

ответ

1

Лучший способ отправить и обработать список или объект Python с помощью JavaScript - это отправить JSON. Вы можете использовать json.dumps в коде питона

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))