Массив Vueapp AJAX не работает

Привет всем, у меня есть vueapp, который выполняет вызов ajax, который выглядит так:

$.ajax({
  url: 'addDisplayBackend.php',
  dataType: 'json',
  type: 'post',
  contentType: 'application/json',
  dataType: 'json',
  data: jsonString,
    error: function(data){
      alert('error');
    console.info(data);
    },
  success: function(data){
    console.info(data);
      alert('success');
      this.nameexists=data.nameexists;
      if (this.nameexists==false){
    console.info(data);
    this.displays=data.displays;
    this.hideAddDisplayForm();
    }
  }.bind(this)
});

на внутренней странице addDisplay я делаю несколько вещей, но я выбираю оператор, который выглядит следующим образом:

$selectdisplaysquery = "SELECT * FROM display WHERE userId='$userid'";
$displaysresult=mysqli_query($mysqli, $selectdisplaysquery);
while($row=mysqli_fetch_assoc($displaysresult)){
 $data['displays']=$row;
}
echo json_encode($data);

Почему это не работает? Почему я не могу заставить $ data ['отображается'] вернуть массив всех объектов в базе данных? По какой-то странной причине у меня просто одна строка. Любая помощь была бы потрясающей

Если вы не знаете, как добавлять значения в массив - открыть руководство.

u_mulder 14.06.2018 21:46

это мне не помогает

codernoob5 14.06.2018 21:55
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
2
22
3

Ответы 3

оставьте vueapp таким же, но измените внутреннюю страницу на

$selectdisplaysquery = "SELECT * FROM display WHERE userId='$userid'";
    $displaysresult=mysqli_query($mysqli, $selectdisplaysquery);
    foreach($displaysresult as $display){
        $displaysarray[]=$display;
    }
    $data['displays']=$displaysarray;

Избил меня на 23 секунды, ха-ха

Feel The Noise 14.06.2018 22:09

For some odd reason I just get one row.

Похоже, ваша проблема здесь:

$data['displays']=$row;

Цикл всегда заменяет ключ displays значением $row, так что в конце концов вы получите только одно значение.

Решение было бы следующим:

$data['displays'][] = $row;

Таким образом вы добавите (толкать) в конец массива.

Обязательно сначала создайте массив, например:

$data['displays'] = [];
$selectdisplaysquery = "SELECT * FROM display WHERE userId='$userid'";
$displaysresult=mysqli_query($mysqli, $selectdisplaysquery);
while($row=mysqli_fetch_assoc($displaysresult)){
 $data['displays'][] = $row;
}
echo json_encode($data);

Вы также можете использовать функцию mysqli_fetch_all ().

$selectdisplaysquery = "SELECT * FROM display WHERE userId='$userid'";

$displaysresult=mysqli_query($mysqli, $selectdisplaysquery);


$data = mysqli_fetch_all($displaysresult,MYSQLI_ASSOC);

echo json_encode($data);

Другие вопросы по теме