2017-05-17 70 views
0

我正在使用flask和python來構建一個web應用程序。 我有Python中的JSON解析的類從javascript訪問python對象列表

class uItem: 
    itemCount = 0 

    def __init__(self, id, name): 
     self.id = id 
     self.name = name 

我需要從HTML訪問數組這個類的對象列表

這是我創建的對象,使他們JSON解析的

from delClass import uItem 

counter = 0 
name = ["proudct1","product2","product3"] 
objarray = [] 

for n in name: 
    obj = uItem(counter, n) 
    r = json.dumps(obj.__dict__) 
    counter = counter + 1 
    objarray.append(r) 

這是其中i加載索引頁

@app.route('/', methods=['GET', 'POST']) 
def main(): 
    return render_template('jsex.html', dlist=objarray) 

我得到一個錯誤說

Uncaught SyntaxError: missing) after argument list

Thisis the error that i am getting 我如何解決這個問題。 是從JavaScript訪問python列表更好的方法嗎?

+0

能否請您添加錯誤窗口的全屏截圖? –

+0

我添加了完整錯誤的屏幕截圖 – user3363357

回答

0

顯然,這條線是根本原因

var counts = JSON.parse("["{\"id\": 0, \"name\": \"product1\"}", "{\"id\": 1, \"name\": \"product2\"}", "{\"id\": 2, \"name\": \"product3\"}"]"); 

爲了解決這一問題,使用flask.jsonify

from flask import jsonify 

@app.route('/', methods=['GET', 'POST']) 
def main(): 
    return jsonify(objarray) 

JSON的回報將是這樣的:

[ 
    "{\"name\": \"proudct1\", \"id\": 0}", 
    "{\"name\": \"product2\", \"id\": 1}", 
    "{\"name\": \"product3\", \"id\": 2}" 
] 

使用jsonify後,您不需要使用JSON.parse了。這兩個Ajax get/post的結果都是一個javascript對象。以下是nodejs中的JavaScript示例代碼。

var axios = require('axios'); 
axios.get('http://localhost:5000').then(function(res){ 
    var data = res.data; 
    console.log(data); 
    console.log(typeof(data)); 
    console.log(data[0]); 
}) 

屏幕上的結果是:

[ '{"id": 0, "name": "proudct1"}', 
    '{"id": 1, "name": "product2"}', 
    '{"id": 2, "name": "product3"}' ] 
object 
{"id": 0, "name": "proudct1"}