2016-12-07 6 views
0

Ich habe eine Liste von Listen in Python:JSONify eine Liste von Listen

[["blue1", "blue2", "blue3", "blue4"], ["blue5", "blue6", "blue7", "blue8"], ["blue9", "blue10", "blue11", "blue12"], ["blue13", "blue14", "red", "blue15"]] 

Als ich json.dump in dieser Liste anrufen und dann JSON.parse es in Javascript, ich habe nicht die entsprechende Liste in in Javascript. Irgendwelche Vorschläge?

In Python habe ich die Anweisung Dumps:

test = [["blue1", "blue2", "blue3", "blue4"],["blue5", "blue6", "blue7", "blue8"],["blue9", "blue10", "blue11", "blue12"],["blue13", "blue14", "red", "blue15"]] 
     return render_template("game.html", test = test); 

In html Ich habe:

<!DOCTYPE html> 
<html> 
<style> 
#container { 
    width: 400px; 
    height: 400px; 
    position: relative; 
} 

</style> 
<body> 

<div id ="container"> 
</div> 

<script src="https://code.jquery.com/jquery-latest.min.js"></script> 

<script src="{{ url_for('static', filename='script.js') }}" test = "{{test|tojson|safe}}"></script> 
</body> 
</html> 

In script.js ich habe:

var board = document.currentScript.getAttribute('test'); 
console.log(board[0][0]); 
console.log(board[0][1]); 
console.log(board[0][2]); 
console.log(board[0][3]); 

Konsole gibt eine [, dann drei undefinierte

+1

Können Sie zeigen, was Sie bekommen? – TemporalWolf

+1

Also wie kippst du und lädst du? Ohne Code und Ausgabe, die Sie bekommen, gibt es nichts, was wir Ihnen sagen können, außer * benutzen Sie 'json.dumps()' und 'JSON.parse' *. –

+0

Weitere Informationen hinzugefügt! – MLE

Antwort

0

Sie erhalten nur das Attribut (welches eine Zeichenkette ist), Sie analysieren es nie in ein Array. Board [0] ist also nur das erste Zeichen der Zeichenkette. Verwenden JSON.parse,

var board = JSON.parse(document.currentScript.getAttribute('test')); 

Allerdings gibt es ein anderes Problem: Sie verwenden die |safe Schablonenfilter Auto entkommen auszuschalten. Aber JSON ist nicht sicher, zum Beispiel enthält es " Zeichen. Wenn Ihr HTML test="[["blue1"], usw. lautet, ist der Wert des Testattributs "[[". Sie müssen also auch diesen Filter entfernen, damit Django diesen Anführungszeichen für Sie entgehen kann.

Verwandte Themen