我正在创建一种像任何社交网络:D一样的API系统。基本上,我创建了一个使用$getJSON方法调用的 php 页面:
这是获取用户.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);
问题是...为什么它每次都返回未定义的对象?代码似乎是对的,有什么想法吗?
由于您正在获取对象数组,因此您必须提及data
的索引。即data[0].avatar
$.getJSON( 'getuser.php',{ id: user }, function(data) {
callback = data[0].avatar
alert(callback);
});
我不确定,但请尝试在回显之前将标头设置为 JSON 对象,如下所示:
header('Content-type: application/json');
echo json_encode($row_set);
只有在执行回调函数后,您才能访问数据:
$.getJSON( 'getuser.php',{ id: user }, function(data) {
// now it’s available
console.log(data);
});
// now it’s not
这称为异步编程,如果这对您来说是一个新概念,请在SO上进行搜索。