我在views.py中有以下代码:
from django.shortcuts import render
from django.shortcuts import render_to_response
from django.http import HttpResponse
import json, requests
platformReq = requests.get(platformUrl, headers={'Authorization': 'Token token="1234"'})
platformData = json.loads(platformReq.text)
return render_to_response('find.html',{'platformList':platformData})
在我的模板文件中,我有:
<script src="{% static "js/standalone.js" %}" type="text/javascript"></script>
<script>
{# this is where it fetches the json and formats it correctly #}
var js_variable = {{platformList | jsonify}};
console.log(js_variable);
function_in_standalone_js(js_variable);
</script>
JSON从console.log()正确输出,但是我收到错误:
ReferenceError:未定义function_in_standalone_js
在我的独立Javascript中:
var function_in_standalone_js = function(js_variable)
{
var options = js_variable['platforms'];
console.log(options)
}
这是输出的内容,以及console.log()给出的内容(有3个以上,但我不想粘贴整个内容):
{“platforms”:[{“slug”:“saturn”,“id”:32,“name”:“Sega Saturn”},{“slug”:“mac”,“id”:14,“名称“:”Mac“},{”slug“:”vc“,”id“:47,”name“:”虚拟控制台(Nintendo)“}}}
提前致谢!
答案 0 :(得分:2)
由于模板中JS的加载时间不同,您应该在$(document).ready(function(){...})
中包装内联JS,以确保它只在文档的其余部分加载后运行,包括外部JS文件。
<script>
$(document).ready(function(){
var js_variable = {{platformList | jsonify}};
console.log(js_variable);
function_in_standalone_js(js_variable);
});
</script>
答案 1 :(得分:0)
可能是你的standalone.js在模板中的代码后加载,因此错误