2013-02-10 69 views
4

我需要從python 2.7中的serverside列表中獲取列表以打印它們的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

使用JavaScript發送和處理列表或Python對象的最佳方式是發送JSON。 您可以在Python代碼使用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)) 
相關問題