PHP无法将所选表中的数组填充为json_编码并在javascript上接收它
我正在基于JqueryMobile构建一个混合应用程序。现在我正试图获得一个简单的数组,其中包含我从mysql表中选择的类别。我看到了许多与此相关的问题,并尝试了上千种解决方案,但都没有奏效 以下是我所拥有的: PHP代码:PHP无法将所选表中的数组填充为json_编码并在javascript上接收它,javascript,php,jquery,mysql,Javascript,Php,Jquery,Mysql,我正在基于JqueryMobile构建一个混合应用程序。现在我正试图获得一个简单的数组,其中包含我从mysql表中选择的类别。我看到了许多与此相关的问题,并尝试了上千种解决方案,但都没有奏效 以下是我所拥有的: PHP代码: $sql=mysql_query("SELECT Tipo FROM tfc_db.Category "); $id=array(); while($row = mysql_fetch_assoc($sql)) { $id[] = $row; //$id[
$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_编码调用
我正试图用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的经历,所以。。这里有点不对劲,我看不见
谢谢。您可以使用以下查询:
$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字符串数组的形式返回类别。e、 g.[条目1,条目2]。如果您决定使用它,那么您需要调整Javascript代码。
您的javascript代码在这一行中包含一些问题:
$('#list').append("<li> <h3>"+answer.tipo+"</h3></a></li>");
在PHP中,列名将命名为Tipo,而不区分大小写。第二个问题是,您试图访问的是answer.tipo,而不是数组answer[i].tipo的元素
因此,使用当前的php代码,您可以通过更改javascript使其正常工作。
这条线
$('#list').append("<li> <h3>"+answer.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);
?>
试试这样的 如果只想获取列“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);
[菲律宾]
[JS]
在这上面找到了解决方案
DB上的所有内容都必须设置为UTF-8或utf8mb4,现在它终于可以工作了。A感谢所有人的帮助:我已经尝试过这个查询,这就是为什么我对它进行了评论,但我没有尝试回答[I]。Tipo,但是的,它也不起作用。。我的页面上什么也没有发生,get_category.php页面也没有显示任何输出。我只是在自己的Web服务器上尝试了一下,没有出现任何问题?我将用我用来测试的完整代码更新我的帖子。还要检查您的错误日志,看看是否有任何错误?也许您缺少mysql\u连接?或者mysql_select_db?不,因为我已经从我的db中获得了其他数据,在我的帖子中,我显示了我得到的最接近的输出,我无法从表中获取这些值,所以连接不是问题。未捕获的TypeError:无法读取未定义的属性“Tipo”。我现在明白了,你能在webbrowser中加载页面,打开javascript/开发者控制台并输入debug吗?调试变量中的内容。如果您查询Tipo,mysql_query很可能会返回数据库中列的名称,但是它在表中被称为Tipo,在输出中被称为Tipo,请验证outputdebug给我的大小写是否正确?oO:function debugfn{[Command Line API]}列是Tipo yes。php页面的输出是[],因此它不会工作,但是我应该在JS上使用什么来从中获取任何信息?您是否检查了$sql是否已填充?如果没有检查,请在执行mysql\u查询之后添加一个var\u dump$sql并打印\r$sql,并检查$sql是否有来自表的值。mysql result Resource id 3类型的resource3会给出这个值,但如果I$rowz=mysql\u fetch\u assoc$sql,则是;和echo$rowz['Tipo'];它给了我列的第一行,并且没有在脚本中使用其他打印数据?不,只有这一行。我用var答案尽可能地提醒所有人,以便得到任何结果。我得到的最好结果是在JSON.parse之后,它给了我一个包含字符串每个字符的数组
<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>
$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);
$id = array();
while($row = mysql_fetch_assoc($sql))
$id[] = $row['Tipo'];
echo json_encode($id);
$(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>');
});
});