Vueapp AJAX数组不起作用

Posted

技术标签:

【中文标题】Vueapp AJAX数组不起作用【英文标题】:Vueapp AJAX array not working 【发布时间】:2018-11-24 15:55:49 【问题描述】:

大家好,我有一个 ajax 调用的 vueapp,如下所示:

$.ajax(
  url: 'addDisplayBackend.php',
  dataType: 'json',
  type: 'post',
  contentType: 'application/json',
  dataType: 'json',
  data: jsonString,
    error: function(data)
      alert('error');
    console.log(data);
    ,
  success: function(data)
    console.log(data);
      alert('success');
      this.nameexists=data.nameexists;
      if(this.nameexists==false)
    console.log(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['displays'] 返回数据库中所有对象的数组?出于某种奇怪的原因,我只得到一排。任何帮助都会很棒

【问题讨论】:

如果您不知道如何向数组添加值 - 打开手册 这对我没有帮助 【参考方案1】:

保持vueapp不变,但将后端页面改为

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

【讨论】:

比我快23秒,哈哈【参考方案2】:

出于某种奇怪的原因,我只得到了一行。

看来你的问题就在这里:

$data['displays']=$row;

循环总是将displays 键替换为$row 值,因此您最终只会得到一个值。

解决方案如下:

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

这样您就可以将 (push) 添加到数组的末尾。

确保首先创建数组,如下所示:

$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);

【讨论】:

【参考方案3】:

你也可以使用 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);

【讨论】:

以上是关于Vueapp AJAX数组不起作用的主要内容,如果未能解决你的问题,请参考以下文章

AJAX PHP 图片上传不起作用,$_FILES 为空?

Spring Rest API 的 AJAX POST 方法不起作用

数据类型:“json”不起作用

Angular 的 $http.post 不起作用,它的 $http... 也不起作用,但 jQuerys ajax 起作用。为啥?

JQuery 自动完成对第一个按键事件不起作用(源是一个数组)

ajax成功内的Ajax调用不起作用