我正在构建一个基于JqueryMobile的混合应用程序。现在我正在尝试获取一个简单的数组,其中包含我从 mysql 表中选择的类别。我看到了很多与此相关的问题,并厌倦了一千个解决方案,但没有任何效果。
这是我所拥有的:
PHP代码:
$sql=mysql_query("SELECT Tipo FROM tfc_db.Category ");
$id=array();
while($row = mysql_fetch_assoc($sql)) {
$id[] = $row;
//$id[] = $row['Tipo']; doesn't work either
}
echo json_encode($id);
mysql_close($conn);
有了这个,我得到空白结果。
我得到的最接近的是这个:
$id=array();
$i=0;
while ($row = mysql_fetch_assoc($sql)) {
$id[] = array("data$i" => $row['Tipo']);
echo json_encode($id[$i]);
$i++;
}
结果是:
{"data0":"Restaurantes"}{"data2":"Shopping"}{"data3":"Eventos"}{"data4":"Hoteis"}{"data5":"Oficinas"}{"data6":"Combustiveis"}
但这显然是错误的,因为它有多个json_encode调用。
我试图用Jquery的.$get得到它
<script type="text/javascript">
var inicio=function(argument){
$("#submit").click(function(e){
e.preventDefault();
$.get('http://myurl/get_category.php',{
},function(answer){
alert(answer.length+" "+answer); //trying to know whats happening with the data.
for (var i = 0; i < answer.length; i++) { //my final objective is to fill a listview.
$('#list').append("<li> <h3>"+answer.tipo+"</h3></a></li>");
}
$('#list').listview('refresh');
},"json"
);
});
}
$(document).on('ready',inicio);
</script>
正如我所说,我搜索了许多问题和解决方案,但总是得到空值。我没有太多的PhP经验,这是我在学习和积累JqueryMobile的经验。这里有我看不到的问题..
谢谢。
在这篇文章中找到了解决方案数据库上的所有内容都必须设置为 UTF-8 或 utf8mb4,现在它终于可以工作了。感谢大家的帮助:)
尝试这样的事情...
如果您只想获取"Tipo"列的值,
$sql=mysql_query("SELECT Tipo FROM tfc_db.Category ");
$id=array();
$i=0;
while($row = mysql_fetch_assoc($sql)) {
$id["data".$i] = $row['Tipo'];
$i++;
}
echo json_encode($id);
mysql_close($conn);
如果你不想得到所有的值,
$sql=mysql_query("SELECT Tipo FROM tfc_db.Category ");
$id=array();
$i=0;
while($row = mysql_fetch_assoc($sql)) {
foreach($value as $key=>$value){
$id["data".$i][$key] = $value;
}
$i++;
}
echo json_encode($id);
mysql_close($conn);
您可以使用以下查询:
$sql=mysql_query("SELECT Tipo FROM tfc_db.Category ");
$id=array();
while($row = mysql_fetch_assoc($sql)) {
$id[] = $row['Tipo'];
}
echo json_encode($id);
mysql_close($conn);
它将以 JSON 格式的字符串数组的形式返回类别,例如 ["条目 1","条目 2"]。如果你决定使用它,那么你需要调整你的Javascript代码。你的javascript代码包含以下行的一些问题:
$('#list').append("<li> <h3>"+answer.tipo+"</h3></a></li>");
如果您使用
$id[] = $row;
在 PHP 中,列名将命名为 Tipo,而不是 tipo(区分大小写)。第二个问题是您正在尝试访问 answer.tipo,而不是数组 answer[i].tipo 的元素。
因此,使用您当前的 php 代码,您可以通过更改 javascript 来使其工作。此行
$('#list').append("<li> <h3>"+answer.tipo+"</h3></a></li>");
自
$('#list').append("<li> <h3>"+answer[i].Tipo+"</h3></a></li>");
编辑:因为您显然在这里遇到问题是我使用的完整代码。
//query.php
<?php
mysql_connect ('localhost','username','password');
mysql_select_db('db_test');
$sql=mysql_query("SELECT Tipo FROM db_test.Category ");
$id=array();
while($row = mysql_fetch_assoc($sql)) {
$id[] = $row;
}
echo json_encode($id);
mysql_close($conn);
?>
<html>
<head>
<title> JQuery db test </title>
<script src="http://code.jquery.com/jquery-2.1.1.min.js"></script>
</head>
<body>
<div id='list' class='list'>
</div>
<script>
var debug;
$.get('http://www.example.com/test/query.php',{
},function(answer){
debug=answer;
//alert(answer.length+" "+answer); //trying to know whats happening with the data.
for (var i = 0; i < answer.length; i++) { //my final objective is to fill a listview.
$('#list').append("<li> <h3>"+answer[i].Tipo+"</h3></a></li>");
}
// $('#list').listview('refresh');
},"json"
);
</script>
</html>
[PHP]
$id = array();
while($row = mysql_fetch_assoc($sql))
$id[] = $row['Tipo'];
echo json_encode($id);
[JS]
$(document).ready(function(){
$('#submit').click(function(e){
$.ajax({
url: '/get_category.php',
type: 'GET',
dataType: 'json'
}).done(function(res){
$('#list').html('');
for(var i=0;i<res.length;++i)
$('#list').append('<li><h3>'+res[i]+'</h3></li>');
});
});