0

我正在使用 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 中的数组吗?

非常感谢。

4

4 回答 4

1

“这不起作用”太模糊了......无论如何,如果我理解你的问题,你正在处理一个字符串,而不是一个 JavaScript 数组......你必须评估从 ajax 调用返回的数据:

var theJavaScriptArray = eval('(' + json_data + ')');

或更好...使用jQuery.ajax并将 json 指定为 dataType:jquery doc

于 2013-02-08T14:27:51.193 回答
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>');
  });
};
于 2013-02-08T14:48:59.290 回答
1

当您以 JSON 格式发送数据时,它是一个字符串(主要数据),但是一个字符串的格式很容易恢复原始类型的数据(即您的数组)。Javascript 和 jquery 有不同的方法来做到这一点。使用 jQuery,getJSON 可能是最直接的:

http://api.jquery.com/jQuery.getJSON/

您可以使用浏览器的 javascript 控制台来查看您的 JS 变量到底是什么样的。

于 2013-02-08T14:33:10.307 回答
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
    }
});
于 2013-02-08T14:51:04.447 回答