2013-10-29 56 views
0

我創建了一種API系統像任何社交網絡:d 基本上,我創建了一個PHP頁面以$的getJSON方法調用:

這是getuser.php

<? 

include 'config.php'; connect(); 

$get = trim(strip_tags($_GET['id'])); 

$sql = "SELECT username,id,avatar FROM utenti WHERE id = $get "; 
$result = mysql_query($sql); 

while ($row = mysql_fetch_array($result,MYSQL_ASSOC)) 
{ 
     $row_set[] = $row; 
} 
echo json_encode($row_set); 

?> 

(例如ID = 2)

[{"username":"Firefoxer","id":"2","avatar":"account\/firefoxer\/pic.jpg"}] 

而且周的.js功能

$.getJSON('getuser.php', { 
    id: user 
}, function (data) { 
    callback = data.avatar 
}); 
alert(callback); 

的問題是...爲什麼每次都返回未定義的對象?代碼似乎是正確的,任何想法?

+0

它不會這樣工作,因爲ajax是一個異步函數,你不能用它來設置一個值,這將在調用之外使用,因爲當警報執行時,ajax調用還沒有完成 –

+0

我只會這樣做用$ .getJSON方法,有可能嗎? –

+0

你不能在成功回調之外使用'callback',你需要在回調函數中放置警報 –

回答

0

因爲你得到的對象數組,就不得不提到的指數data。 即data[0].avatar

$.getJSON('getuser.php',{ id: user }, function(data) { 
    callback = data[0].avatar 
    alert(callback); 
}); 
+0

對,謝謝:) –

0

我不知道,但嘗試你的迴音之前設置頁眉爲JSON對象,象下面這樣:

header('Content-type: application/json'); 
echo json_encode($row_set); 
0

回調函數被執行後,您只能訪問數據:

$.getJSON('getuser.php',{ id: user }, function(data) { 
    // now it’s available 
    console.log(data); 
}); 
// now it’s not 

這就是所謂的異步編程,做一個搜索在這裏,如果這是一個新概念您。

+0

對,謝謝;) –