我想将查询结果传递给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))
。
您可能已经注意到,我是新手,所以所有基本提示都将是一个很大的帮助。
谢谢!
答案 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中,您需要回显/返回结果。结果数据可以在函数中用作数据