2010-09-06 54 views
0

当我打电话从PHP文件的JSON对象返回未定义的。我能看到的所有数据写入alert(data),但是当我写警报(data.books)返回undifined。调用JSON数据返回undefined“

$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" 

} 

} 
+1

你是不是指'data.books.book1'? – 2010-09-06 13:15:53

+0

您提醒'data.success',而不是'data'。 – aularon 2010-09-06 13:17:30

+0

data.success,未根据您的JSON格式回复定义。 – 2010-09-06 13:19:15

回答

0

如果你在jQuery的1.4+,您传回JSON是无效的,它需要一套引号围绕第一books项,像这样:

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

早期版本更对此略为宽松,但一旦你改正了,alert(data.books)应该导致对象警报。对于您的if(),您将使用data.books.book1来获取JSON中的条目。

+0

我改变它就像你伤心与“书”,但它也说,它是undifined.Also返回未分配 – Ercan 2010-09-06 13:25:11

+0

@Meko - 如果你做'console.log(数据)',你在看到什么安慰?这听起来像你的答复没有格式化*就像它是在问题中。 – 2010-09-06 13:28:36

+0

我编辑了警报(数据)时的结果 – Ercan 2010-09-06 13:29:30

0

我在PHP文件变了样

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

现在它显示当我写警报(data.book1)出把fisrtbook。对于检查,如果(data.book1)它的工作原理。