2010-09-06 52 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)它的工作原理。