Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在jQueryAjax返回的页面中显示这个JSON字符串?_Jquery_Json - Fatal编程技术网

如何在jQueryAjax返回的页面中显示这个JSON字符串?

如何在jQueryAjax返回的页面中显示这个JSON字符串?,jquery,json,Jquery,Json,我已将以下JSON字符串返回到页面 {“姓氏”:“鲍勃”,“姓氏”:“盖茨”,“部门”:“技术”} 我想在页面中显示属性值,但有问题 这是我的jquery ajax function BuildTable(msg) { var Person = msg[0]; var table = '<table><tr><td>' + person.firstName + '<td><tr></t

我已将以下JSON字符串返回到页面

{“姓氏”:“鲍勃”,“姓氏”:“盖茨”,“部门”:“技术”}

我想在页面中显示属性值,但有问题

这是我的jquery ajax

function BuildTable(msg) {
           var Person = msg[0];
            var table = '<table><tr><td>' + person.firstName + '<td><tr></table>'
            $("#temp").html(table);
        };

  $.ajax({
                type: "POST",
                url: "../test/json.aspx/testjson",
                contentType: "application/json; charset=utf-8",
                dataType: "json",
                success: function (msg) {
                    BuildTable(msg.d);
                }
            });
函数构建表(msg){
var Person=msg[0];
变量表=“”+person.firstName+“”
$(“#temp”).html(表格);
};
$.ajax({
类型:“POST”,
url:“../test/json.aspx/testjson”,
contentType:“应用程序/json;字符集=utf-8”,
数据类型:“json”,
成功:功能(msg){
构建表(msg.d);
}
});
虽然我在Firebug中看到JSON字符串,但它返回“undefined”。 我可以使用“msg”而不是“Person.firstName”返回JSON字符串

如何在JSON字符串中显示属性值


谢谢

您的JSON不代表javascript数组,因此您不应该试图获取给定索引中的元素,而是直接使用对象的属性:

function BuildTable(msg) {
    var table = '<table><tr><td>' + msg.firstName + '<td><tr></table>'
    $("#temp").html(table);
}
一系列的人会像这样:

[ {"firstName":"Bob","lastName":"Gates","department":"Tech"},
  {"firstName":"John","lastName":"Gates","department":"HR"} ]

现在您可以访问
msg[0].firstName
,…

这里有一些似乎不正确的东西

  • 您正在执行msg.d,但是返回的json对象没有名为“d”的属性

  • 一旦将msg.d传递到BuildTable函数中,您就会尝试将其用作数组

  • 声明Person对象,然后尝试使用小写字母引用“Person”。这也是不正确的,因为js区分大小写

  • 更新:

    function BuildTable(msg) {
            var person = jQuery.parseJSON( msg );
            var table = '<table><tr><td>' + person.firstName + '<td><tr></table>'
            $("#temp").html(table);
        };
    
    函数构建表(msg){
    var person=jQuery.parseJSON(msg);
    变量表=“”+person.firstName+“”
    $(“#temp”).html(表格);
    };
    
    这个答案应该可以帮助您:我最初有msg.firstName,但我得到了空白页,所以我添加了一个msg[0]。我认为它必须是一个数组…这是Firebug中的响应部分。我想我有“d”键。{“d”:“{“firstName\”:“Bill\”,“lastName\”:“Gates\”,“department\”:“Tech\”}}@shinya,确实有一个.d属性,所以你应该保留它。是的,我真的不需要使用数组。是否可以只处理一行数据?我想我有“d”键。下面是firebug中的响应部分。{“d”:“{“firstName\”:“Bill\”,“lastName\”:“Gates\”,“department\”:“Tech\”}}啊,好的,我看到你在问题中的回答是你发送给BuildTable函数的。在这种情况下,你不需要索引你的msg,你仍然需要用Person变量来修正你的大小写。所以,删除var Person并将其更改为msg.firstName应该可以工作,对吗?但我仍然没有定义…您仍然需要将字符串解析为有效的javascript对象。我更新了我的答案以反映这一点。
    function BuildTable(msg) {
            var person = jQuery.parseJSON( msg );
            var table = '<table><tr><td>' + person.firstName + '<td><tr></table>'
            $("#temp").html(table);
        };