【问题标题】:Dynamically Create JavaScript Object From MySQL Table从 MySQL 表动态创建 JavaScript 对象
【发布时间】:2017-07-17 12:04:38
【问题描述】:

假设我有这张桌子mytable

id | name | x | y

我从mytable 中提取行并使用它创建 JavaScript 对象,如下所示:

PHP

$sql = "SELECT * FROM mytable";
$result = $conn->query($sql);

if ($result->num_rows > 0) {
    while($row = $result->fetch_assoc()) {  
        echo '<script type="text/javascript">';
        echo "new Object({$row["id"]}, '{$row["name"]}', {$row["desk_x"]}, {$row["desk_y"]});";
        echo '</script>';            
    }
}

JS

function Object(id, name, x, y) {
    var obj = {
        id:id, 
        name:name, 
        x:x, 
        y:y
    };
}

目前这很好,但可以说我想将另一列 color 添加到 mytable

基本上我在问我应该用 PHP 和 JS 写什么来动态地生成这个对象,这样你就可以有任何列,Object 对象只会添加一个带有列名称的新属性?

【问题讨论】:

  • 不要调用你的函数Object Object已经存在,你会覆盖它,失去对原始Object的访问。而且,Object 并不是构造函数的真正富有表现力的名称,是吗?
  • 我知道。那是一个例子,不是我的实际代码。

标签: javascript php mysql object


【解决方案1】:

您可以使用AJAX 将数据从服务器端发送到客户端。假设您有一个名为 script.phpPHP 文件,其中包含您的代码:

if(isset($_GET['action']) && $_GET['action'] == 'testing'){
    $sql = "SELECT * FROM mytable";
    $result = $conn->query($sql);

    if ($result->num_rows > 0) {
          echo json_encode($result);
    }
}

假设您有一个名为script.jsJS 文件。在这里,您将对PHP 脚本文件进行AJAX 调用,如下所示:

$.ajax({
  type: 'GET',
  url: 'script.php',
  data: { action: 'testing' },
  success: function(response){
     console.log(response); //here you will have access to the object returned from the PHP script
  }
})

【讨论】:

  • 我正在寻找一种从表中获取列并制作具有相同属性的 java-script 对象的方法
  • 我的回答中的代码应该能满足你的需要。
  • 控制台正在打印我的整个 index.php 文件
  • 这取决于 PHP 文件中的内容。它应该只是我刚刚添加到答案中的代码的一部分。或者您可以查看$_GET 请求。
  • @AdamStück,请检查我的回答中的更新代码。
【解决方案2】:

我猜你正在寻找的是如何在没有 AJAX 的情况下做到这一点(你在这里并不真正需要)。

将对象放入数组中,然后输出你的 JS 变量:

PHP:

$rows = [];
if ($result->num_rows) 
  while($row = $result->fetch_assoc()) $rows[] = $row; // append to array
echo "<script> var objArray = " . json_encode($rows) . "; </script>";

【讨论】:

  • 如果 AJAX 更好,你会怎么做?
  • 这听起来好像你不知道 AJAX 是什么/做什么。而且你没有说你是否尝试过我的代码。或者它是否有效。
  • 我试过你的代码,它可以工作,但如果 AJAX 是更好的选择,你能告诉我你会写什么吗?我尝试了上面@Ionut 的AJAX 代码,但效果不佳。顺便说一句,我正在使用 AJAX 更新我的数据库中的数据。
  • 我不知道 AJAX 是否是更好的选择,或者您是否需要它。很抱歉,我很难估计您的知识水平,而且我不知道您还需要多少信息(SO 不是初学者的编码学校)。要求我将我的代码转换为 AJAX 意味着您不知道如何使用它,并且这个问题(或网站)不是学习如何使用 AJAX 的地方。
猜你喜欢
  • 2023-03-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-03-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多