未捕获的TypeError:无法读取未定义的属性'wsname'

时间:2015-08-17 11:16:17

标签: javascript jquery json

我正在尝试使用以下代码从数据库中获取值( login.js

$.post("http://awebsite.com/app/login.php",{ rep1: rep, password1:password},
function(data) {
if(data=='Invalid rep.......') {
$('input[type="text"]').css({"border":"2px solid red","box-shadow":"0 0 3px red"});
$('input[type="password"]').css({"border":"2px solid #00F5FF","box-shadow":"0 0 5px #00F5FF"});
alert(data);
}else if(data=='Repname or Password is wrong...!!!!'){
$('input[type="text"],input[type="password"]').css({"border":"2px solid red","box-shadow":"0 0 3px red"});
alert(data);
} else if(data !==''){
//$("form")[0].reset();
//$('input[type="text"],input[type="password"]').css({"border":"2px solid #00F5FF","box-shadow":"0 0 5px #00F5FF"});
//alert(data);
alert("Welcome " + rep + "  !!");

var obj = JSON.parse(data);

//[{"wid":"2","repid":"1"}]
 //objwid = obj[0]["wid"];
 //objrepid = obj[0]["repid"];
 objwsname= obj[0]["wsname"];

但我在此行Uncaught TypeError: Cannot read property 'wsname' of undefined

中收到objwsname= obj[0]["wsname"];错误

我确信获得正确的数据会看到这一点 enter image description here

我在html中使用以下脚本

<script src="js/jquery.js"></script>
<script src="js/jquery.mobile-1.0rc1.min.js"></script>
<script src="jqm.autoComplete-1.5.2-min.js"></script>
<script src="src\jquery.tabletojson.js"></script>
<script type="text/javascript" src="js/login.js"></script>

2 个答案:

答案 0 :(得分:1)

由于这只是一个对象,而不是一个包含一个或多个对象的数组,因此您无需提供索引 [0]

objwsname = obj["wsname"];

或:

objwsname = obj.wsname;

可以获得wsname

看看你是否有一个包含一个对象的数组,那么你必须得到它的索引,如:

// suppose this is the data
data = [{"foo":"bar"}, {"foo":"baz"}];
//      ^----0------^  ^-----1-----^  // indexes of the objects inside data array.

所以这两个:

alert(data[0].foo); // alerts bar
alert(data[0]['foo']); // alerts bar

这里你需要索引。

答案 1 :(得分:0)

应该就是这样:

objwsname = obj.wsname;

obj是一个不是数组的对象。

如果传递给JSON的{​​{1}}字符串包含一个数组,那么它将返回一个数组。在您的情况下,包含JSON.parse对象的字符串被传递给JSON - 因此它返回了一个对象。