2012-02-29 66 views
-1

UDPATE:那么通过多维阵列消除的最佳方法是什么?所以要检查复杂阵列内部的物体并抓住它们的值。Javascript(jQuery)测试json对象中的数组和返回值

 

{ "error":{ 
     "data": { 
      "id":"3", 
      "name":"404", 
      "content" : "value" 
     }, 
     "response":"Invalid path.", 
     "code": 1 
    } 
} 

if(json.error.data !== undefined) { 
     alert('value: ' + json.error.data); 
} 

我在这里有一个问题;我似乎无法正确解决。当我尝试检查数组的值时,它会返回错误“Uncaught TypeError:如果数组数据不存在或内容不存在,则无法读取未定义的属性'数据'。我知道有一种方法可以使用indexOf()来测试值是否存在,但这对我没有帮助。我需要测试这个值然后捕获它。请记住,这是一个多维数组,因此使用indexOf不一定会定位数组的复杂性以及如何定位它。

好的,就这么简单。我需要说的是,数组数据和参数内容是否存在于上面显示的错误数组中。如果是这样,那么捕捉它的价值并做一些事情。我也读过关于jQuery.inArray();我不知道如何使用jQuery.inArray();我也阅读关于jQuery.inArray();我不知道如何使用jQuery.inArray();我不知道如何将它用于复杂的多维数组。

是唯一成功的方式做到这一点使用(在Z X){}

+0

如果你看到 “不能读取属性未定义 '数据'” 试图访问json.error.data时,那么问题不在于数据未定义,而是该错误未定义。 – CodeThug 2012-02-29 03:44:25

+0

这显然不是您的实际代码。字符串是说你从服务器获取JSON数据的一种方式吗? – 2012-02-29 03:51:21

+0

json数据被转换成一个对象并被卡入数组中。当我尝试访问该数组以测试是否存在具有值的另一个数组时,我得到一个错误。 – kr1zmo 2012-02-29 03:53:57

回答

1

要测试undefined,请使用typeof和字符串'undefined'

另外,在将字符串解析为JSON之后,检查.error的父属性是否存在.data。从代码中不清楚这是否已经完成。

var obj = JSON.parse(json); 

if (typeof obj.error !== 'undefined') { 
    if(typeof obj.error.data !== 'undefined') { 
     alert('value: ' + obj.error.data); 
    } 
} 
+0

控制台正在输出,未捕获TypeError:无法读取未定义的属性“数据” – kr1zmo 2012-02-29 03:48:08

+0

@ kr1zmo请参阅上面的更改。同时检查'json.error' – 2012-02-29 03:50:13

+0

_“你不能比较undefined与等号运算符”_ - 确定你可以:'if(obj.error === undefined)'(假设你确保'undefined'没有被给定一个定义的值)或'if(obj.error === void 0)'。 – nnnnnn 2012-02-29 04:00:36

-1

我认为一个循环的那样简单的事实,你已经包围你的对象与报价,这使得它的一个字符串而不是一个对象。删除这些,它应该工作正常。

0

我认为你的对象错了。

json = '{... 

您正在用单引号开头。变量json现在是string,而不是JavaScript对象。

+0

我刚给你看json,所以你可以理解我我在做。在我的代码中,json数据被转换为一个对象。但是当我尝试测试一个值时,我得到了这个错误。 – kr1zmo 2012-02-29 03:45:05

+0

我不相信它是:http://jsfiddle.net/remibreton/5eYMG/ – 2012-02-29 03:47:53

+0

它甚至不是一个字符串。这是一个SyntaxError。 – 2012-02-29 03:52:24

0

声明你的对象,因为这

json = 
{ 
    "error":{ 
     "data": { 
      "id":"3", 
      "name":"404", 
      "content" : "value" 
     }, 
     "response":"Invalid path.", 
     "code": 1 
    } 
};