调用Json数据返回undefined“

当我从php文件中调用json对象时,它返回undefined。 我可以看到所有数据写入alert(data)但是当我写警报(data.books)时,它会返回unifined。

 $JSON = ' { "books": { "book1": "firstbook", "book2": "secondbook" } } '; 

我用jquery调用它

 jQuery('#login').live('submit',function(event) { $.ajax({ url: 'lib/login.php', type: 'POST', dataType: 'json', data: $('#login').serialize(), success: function(data ) { alert(' ' +data.books); if(data.books.book1){ alert("OK"); }else { alert("error"); } } }); return false; }); 

编辑这是它返回警报(数据)的方式

  { "books": { "book1": "firstbook", "book2": "secondbook" } } 

如果您使用的是jQuery 1.4+,那么您返回的JSON无效,它需要围绕第一books条目的一组引号,如下所示:

 { "books": { "book1": "firstbook", "book2": "secondbook" } } 

早期版本对此更加宽容,但一旦你纠正它, alert(data.books)应该导致对象警报。 对于if() ,您将使用data.books.book1来获取JSON中的条目,就像现在一样。

我在.php文件中改了

 $arr = array ( "book1" => "firstbook" ,"book2" => "secondbook" ); 

现在它显示当我写alert(data.book1)out fisrtbook .for检查if(data.book1)它是否有效。