我从数据库中读取了用户,但是我将json返回给ajax只返回了最后一个用户,因为我无法连接json编码。
library(shiny)
library(shinydashboard)
ui <- dashboardPage(
dashboardHeader(),
dashboardSidebar(uiOutput("choices")),
dashboardBody()
)
server <- function(input,output) {
output$choices <- renderUI(radioButtons("blabla", NULL, 1:100))
}
shinyApp(ui = ui, server = server)
答案 0 :(得分:1)
您现在正在每次迭代中覆盖$myJson
。我们也不能“合并”两个json(好吧,我们可以,但我们不应该这样做,因为这很费力。)。
最好将所有内容放在一个数组/对象中,并在最后放置json_encode()
。
$myObj = new \stdClass();
$users = array(); // instantiate a new array
while ($fila = $bd->fila()) {
$myObj->NOMBRE = $fila["NOMBRE"];
$myObj->ROLENAME = $fila["ROLENAME"];
$myObj->IDUSER = $fila["IDUSER"];
// add objects to that array
$users[] = $myObj;
}
// then at the end encode the whole thing to json:
echo json_encode($users);
现在有一些变体:
如果您希望数据库在此项目中返回的所有内容,可以将其缩短为:
$users = array(); // instantiate a new array
while ($fila = $bd->fila()) {
// add the whole item (cast as Object) to that array
$users[] = (Object) $fila;
}
// then at the end encode the whole thing to json:
echo json_encode($users);
如果您不在乎项目是对象还是数组,则可以跳过转换,只需将数组添加到大数组即可:
$users[] = $fila;
答案 1 :(得分:0)
您只需要将数据收集到大数组中,然后对整个数组进行编码即可。同样,没有理由创建新的StdObjects而不是通常的数组。
// define empty array
$result = [];
while ($fila = $bd->fila()) {
// add to the array all needed elements one by one
$result[] = [
'NOMBRE' => $fila["NOMBRE"],
'ROLENAME' => $fila["ROLENAME"],
'IDUSER' => $fila["IDUSER"],
];
}
// encode whole result
echo json_encode($result);
答案 2 :(得分:0)
也许如果您将其连接为这样的数组
$myJSON[] = $myObj;
然后过一会儿
echo json_encode($myJSON);