Json字符串无法使用jquery显示

时间:2014-02-18 08:06:02

标签: jquery json

我的Web服务正在返回一个名为jsonString的JSON数组。我正在使用jQuery mobile。这具有值:

{
    "id": "10844",
    "password": "acddcd",
    "role": ["PortalAdmin,ViewAllJob,SetupAdmin,Budget Approval,MarketingAdmin,ProjectManagementAdmin,HRAdmin,PayRollAdmin,SCMAdmin,VendorPortalAdmin,FinanceAdmin,AnalyticsAdmin"],
    "userName": "portaluser"
}

在文本框中显示此数组的内容(#as是文本框):

$('#as').val(jsonString); 

当我使用此代码时:

var a = {
    "id": "10844",
    "password": "acddcd",
    "role": ["PortalAdmin,ViewAllJob,SetupAdmin,Budget Approval,MarketingAdmin,ProjectManagementAdmin,HRAdmin,PayRollAdmin,SCMAdmin,VendorPortalAdmin,FinanceAdmin,AnalyticsAdmin"],
    "userName": "portaluser"
};
alert(a.id);

我得到正确答案,即10844但是,当我使用此代码时:

var a=jsonString;
alert(a.id);

我得到undefined。为什么呢?

2 个答案:

答案 0 :(得分:1)

在第一种情况下,您创建一个对象,当您访问此对象的id属性时,没有问题。

在第二种情况下,您将变量作为字符串赋予JSON。它没有id属性,您必须首先解析JSON字符串,而不是访问其属性。

在第二种情况下执行此操作:

var a = JSON.parse(jsonString);
alert(a.id);

如果jsonString不是字符串而是对象,则有两件事需要提及:

  1. 作为rockStar said,请确保您的变量存在,并将结果从您的网络服务分配到jsonString变量。
  2. 这是错误的命名。如果你称之为jsonString,其他人会认为它是一个字符串。如果是对象,则将其称为jsonObjectjsonResponse

答案 1 :(得分:0)

var JSONstring = {
    "id": "10844",
    "password": "acddcd",
    "role": ["PortalAdmin,ViewAllJob,SetupAdmin,Budget Approval,MarketingAdmin,ProjectManagementAdmin,HRAdmin,PayRollAdmin,SCMAdmin,VendorPortalAdmin,FinanceAdmin,AnalyticsAdmin"],
    "userName": "portaluser"
};

您需要定义JSONstring,其余代码正常运行,

var a = JSONstring;
alert(a.id);

fiddle