【问题标题】:Pass data from mysqli to javascript将数据从 mysqli 传递到 javascript
【发布时间】:2016-02-08 09:01:57
【问题描述】:

我想将查询结果传递给 javascript(我想做一个关于鱼类种类的交互式测验)。使用 json_encode 似乎很容易,但是我的 php 数组的结构使其难以访问?即使console.log 也不起作用,所以可能有一个错误,尽管我检查这段代码的次数比我想承认的要多。我很确定错误出在小的 javascript 部分。代码(这都在一个 .php 文件中):

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<?php
$con = new mysqli("localhost", "root", "", "marinefish");
$query = "SELECT Commonname, Scientificname FROM allseafish";
$result = $con->query($query);
while ($row = $result->fetch_array()){
       $rows[] = $row;
}

/*
Structure rows:  
array(544) {
  [0]=>
  array(4) {
    [0]=>
    string(7) "Allfish"
    ["Commonname"]=>
    string(7) "Allfish"
    [1]=>
    string(11) "Omni pisces"
    ["Scientificname"]=>
    string(11) "Omni pisces"
  }
*/

mysqli_free_result($result);
mysqli_close($con);
?>

<title>Untitled</title>
</head>
<body>

<script type="text/javascript">
var ars = <?php echo json_encode($rows) ?>;
console.log(ars);
alert(ars[0][0]);
</script>
</body>
</html>

非常欢迎任何建议或易于理解的链接/教程! 我试过:http://www.dyn-web.com/tutorials/php-js/json/multidim-arrays.php 这似乎解释得很清楚,但帮不了我。我也尝试过简化 php 数组的结构,但没有成功。 我尝试将 echo json_encode($rows) 更改为 print(json_encode($rows))。 您可能已经注意到,我是新手,所以所有基本技巧都会有很大帮助。 谢谢!

【问题讨论】:

    标签: javascript php arrays json mysqli


    【解决方案1】:

    更好的解决方案是通过 post/get 请求将您的 javascript 与 PHP 分开,方法是创建一个特定于数据库响应的新 PHP 页面(例如 Query.php):

    ... MYSQL CODE ...
    echo json_encode($rows); // Echo everything into body
    

    并使用 jQuery(或等效的 Ajax 请求):

    $.ajax({
      type: "GET",
      url: 'query.php',
      dataType: "json",
      success: function(your_php_reponse_as_json){
          console.log(your_php_reponse_as_json);
      }
    });
    

    请注意,此代码本质上是异步的,因为对 MYSQL 查询的请求是使用异步 JavaScript 在另一个页面中发送的。此外,您可以使用 $_POST 和 $_GET 自定义您的查询响应:

    PHP 代码:

    $get1 = $_GET['js_sent'];
    // Alternatively
    $post1 = $_POST['js_sent'];
    

    编辑:您需要在发送前序列化数据。 有关完整的 jQuery 解决方案,请参阅此处jQuery Ajax POST example with PHP

    【讨论】:

    • 谢谢,将 javascript 与 PHP 分开使它工作,也使编码更清晰。
    【解决方案2】:
     $.post("checkproduct.php", {"useremail" : emailVal}, function(data) {
    

    //使用checkproduct.php返回的数据。将checkemail.php返回的值作为数据检索。

    });

    上面的代码 post 方法将变量发布到 checkproduct.php 这里我们传递的是 useremail ,值是 emailVal ,这也是一个变量。在 checkproduct.php 中,您需要回显/返回您的结果。结果数据可以在函数中作为数据使用

    【讨论】:

      猜你喜欢
      • 2020-03-05
      • 2013-03-10
      • 1970-01-01
      • 2023-03-25
      • 1970-01-01
      • 1970-01-01
      • 2011-06-21
      • 1970-01-01
      • 2021-06-03
      相关资源
      最近更新 更多