从 php 返回一个可迭代对象到 Ajax

Posted

技术标签:

【中文标题】从 php 返回一个可迭代对象到 Ajax【英文标题】:Returning an itterable object to Ajax from php 【发布时间】:2021-04-25 03:54:31 【问题描述】:

如何在我的 jquery/ajax 调用中遍历从下面的 php 脚本返回的对象? 我试过result[0],它给了我c。这意味着我被返回一个字符串。我应该写什么代码来返回company1等?

DROP DATABASE IF EXISTS test;
CREATE DATABASE test;
USE test;

CREATE TABLE company(
name VARCHAR(255),
id INT PRIMARY KEY AUTO_INCREMENT
);

INSERT INTO company(name) VALUES( 'company1'); 
INSERT INTO company(name) VALUES( 'company2');
INSERT INTO company(name) VALUES( 'company2');
$.ajax(
    type: "GET",
    url: "manager-get-company.php",
    success: function (response) 
        //iterate through response here
        //console.log(response[0]; -> log Company1
        //console.log(response[1]; -> log Company2
    
);
<?php

//manager-get-company.php

$hostname = 'localhost';
$username = 'root';
$password = '';
$database_name = 'test';
 $con = mysqli_connect($hostname,$username,$password,$database_name);

 //Check connection
if (mysqli_connect_errno()) 
  echo "Failed to connect to MySQL: " . mysqli_connect_error();
  exit();


$sql= mysqli_query($con, 'SELECT name FROM company');
while($row = mysqli_fetch_array($sql))
    echo $row['name'];

【问题讨论】:

【参考方案1】:

在 ajax 中添加dataType : "json",

$.ajax(
    type: "GET",
    dataType : "json",
    url: "manager-get-company.php",
    success: function (response) 
        //iterate through response here
        if(!response.error)
          console.log(response[0]);
        
    
);

在php中

$result = [];
 //Check connection
if (mysqli_connect_errno()) 
  $result['error'] = "Failed to connect to MySQL: " . mysqli_connect_error();
else
  $sql= mysqli_query($con, 'SELECT name FROM company');
  while($row = mysqli_fetch_array($sql))
    $result[] = $row['name'];
  

echo json_encode($result);

已编辑:使用$result['error'] 而不是result['error']

【讨论】:

您好,谢谢您的回答。我仍然从运行它得到一个 500 错误代码 @VectorXY 如果您的代码返回值c,如您所说,那么我的代码应该可以正常工作。请复制/粘贴我的代码,然后重试 @VectorXY 我将array_push 行改为`$result[]`检查一下 @VectorXY 抱歉 $result= array_push( 应该是 array_push(.. 没有 $result = 反正 $result[] = $row['name'] 会工作 是的,现在工作正常。我应该更深入地研究数组。非常感谢!

以上是关于从 php 返回一个可迭代对象到 Ajax的主要内容,如果未能解决你的问题,请参考以下文章

只要基于前一个元素的条件为真,“Pythonic”方式就可以从可迭代对象中返回元素

python基础一 ------利用生成器生成一个可迭代对象

构成可迭代对象的要素

可迭代对象,迭代器(对象),生成器(对象)

python迭代器 iterator

可迭代对象与迭代器