将数据从mysqli传递给javascript

时间:2015-11-07 06:39:11

标签: javascript php arrays json mysqli

我想将查询结果传递给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)) 。 您可能已经注意到,我是新手,所以所有基本提示都将是一个很大的帮助。 谢谢!

2 个答案:

答案 0 :(得分:0)

更好的解决方案是通过创建一个特定于数据库响应的新PHP页面(例如Query.php),通过post / get请求将您的javascript与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&amp;来自定义查询响应。 $ _GET:

PHP代码:

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

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

答案 1 :(得分:0)

 $.post("checkproduct.php", {"useremail" : emailVal}, function(data) {

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

});

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