【问题标题】:Returning an itterable object to Ajax from php从 php 返回一个可迭代对象到 Ajax
【发布时间】: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'];
}

【问题讨论】:

    标签: javascript php jquery mysql


    【解决方案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'] 会工作
    • 是的,现在工作正常。我应该更深入地研究数组。非常感谢!
    猜你喜欢
    • 1970-01-01
    • 2019-06-23
    • 1970-01-01
    • 1970-01-01
    • 2011-05-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-13
    相关资源
    最近更新 更多