我正在使用Django框架来构建一个网站。
在Python文件(views.py)中,我向Javascript函数发送一个已转换为json数据的数组
的Python:
json_data=[1,2,3]
return HttpResponse(json.dumps(json_data), mimetype='application/json')
然后,在Javascript中,我在html中显示json数据。
JavaScript的:
function get_variable(){
$.get("/xhr_test/json/", function(json_data) {
$('.square').append('<p> ' + json_data + ' </p>');});
};
到目前为止一切正常。但是,我想将“json_data”(我认为是一个字符串)转换为数组。
我试过这样做:
function get_variable(){
$.get("/xhr_test/json/", function(json_data) {
var array = json_data.split(',');
$('.square').append('<p> ' + array[0]+ ' </p>');});
};
不幸的是,这不起作用。
有人可以向我解释如何将“json_data”变量转换为JavaScript中的数组?
非常感谢。
答案 0 :(得分:1)
“这不起作用”它太模糊了...... 无论如何,如果我理解你的问题,你正在处理一个字符串,而不是一个JavaScript数组...你必须评估从ajax调用返回的数据:
var theJavaScriptArray = eval('(' + json_data + ')');
或更好......使用 jQuery.ajax 并将json指定为dataType:jquery doc
答案 1 :(得分:1)
当您以JSON格式发送数据时,它是一个字符串(主数据),但是以这样的方式格式化的字符串可以很容易地恢复原始类型(即您的数组)的数据。 Javascript和jquery有不同的方法来做到这一点。使用jQuery,getJSON可能是最直接的:
http://api.jquery.com/jQuery.getJSON/
您可以使用浏览器的javascript控制台来查看JS变量的确切含义。
答案 2 :(得分:1)
最后,感谢Zah,我发现了“javascript控制台”,我不知道它存在。
我可以看到错误是“json_data”变量不是字符串。
所以这是对我有用的解决方案:
function get_variable(){
$.get("/xhr_test/json/", function(json_data) {
var b=json_data.toString().split(',');
$('.square').append('<p> ' + b[0] + ' </p>');
});
};
答案 3 :(得分:0)
jQuery中有一个简写来自动解析json字符串:jQuery.getJSON()
$.getJSON('/xhr_test/json/', function(data) {
console.log(data); // Here data is already a JavaScript object
});
这基本上与:
相同$.ajax({
url: "/xhr_test/json/",
dataType: "json",
success: function(data) {
console.log(data); // Here data is already a JavaScript object
}
});
与...大致相同:
$.ajax({
url: "/xhr_test/json/",
success: function(data) {
var json = $.parseJSON(data); // Here data is a string
console.log(data); // And json is JavaScript object
}
});