我无法从数据库中获取数据。我的目标是从我的数据库中获取所有组并以JSON(在警告框或其他任何方式)中返回它们。
现在它不会转换为JSON,我从ajax调用得到了奇怪的响应文本。如果您还需要其他任何东西来解决这个问题,请不要犹豫。
这就是我所做的。
$servername = "redacted";
$username = "redacted";
$password = "redacted";
$dbname = "redacted";
if(isset($_POST['action']) && !empty($_POST['action'])) {
$action = $_POST['action'];
switch($action) {
case 'getGroups' : getAllGroups();break;
}
}
function getAllGroups() {
$mysqli = new mysqli($servername, $username, $password, $dbname);
$query = $mysqli->query("SELECT * FROM groups");
while($row = $query->fetch_object()) {
$result[] = $row;
}
echo "{\"results\":";
echo json_encode($result);
echo "}";
$mysqli->close();
}
function getPosts() {
$.ajax({
url: 'functions.php',
data: {action: 'getGroups'},
type: 'post',
success: function(output) {
var result = JSON.parse(output);
result = result.resultaten;
alert(result);
}
});
}
getPosts();
提前致谢, Mistergrave。
答案 0 :(得分:1)
无需额外的echo
。试试 -
echo json_encode(array('results' => $result));
而不是 -
echo "{\"results\":";
echo json_encode($result);
echo "}";
无需 - if(isset($_POST['action']) && !empty($_POST['action'])) {
if(!empty($_POST['action'])) {
- 全力以赴。
首先定义$result
。
$result = array();
while($row = $query->fetch_object()) {
$result[] = $row;
}
答案 1 :(得分:1)
好的,我设法解决了一切。显然,php函数无法找到我的凭据登录到数据库服务器,因为我在php文件上定义了它们(并且由于javascript只执行了该函数,因此这些凭据未定义)。
我只是在每个函数的开头复制粘贴凭证,以便定义这些凭据。和tadaah!它起作用了:)。
<小时/> 现在我意识到为什么responseText充满了表,因为它开始返回有关连接的错误表。
我希望我的解释能帮助其他有这个问题的人。
干杯,感谢所有有用的答案,
Mistergrave。
答案 2 :(得分:0)
使用
echo json_encode(array('result'=>$result));
因为它将数组作为参数。查看here
请注意:
如果确定要返回json数据,请使用dataType:json,这样就不需要JSON.parse(output)
。