PHP 无法从选定的表中填充数组以json_encode并在 javascript 上接收它
PHP can't populate array from selected table to json_encode and receive it on javascript
我正在构建一个基于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>');
});
});
相关文章:
- 使用clickToggle并在单击另一个元素时关闭元素
- 使用javascript检查多个输入值,并在1次检查中标记多个输入框
- 使用jQuery动态添加表并在其中动态添加行
- 遍历类元素数组,并在jquery中选择同级元素
- 如何缩短MongoDB ObjectId并在Mongoose模式中使用它
- 如何覆盖锚点元素's href目标,并在我点击转到目标javascript时删除其他错误
- 通过ajax将坐标传递到php服务器端,并在处理后检索到javascript
- ng消息仅在触摸时显示错误,并在错误的初始显示上转换
- Javascript对象类在单击时打开窗口进行颜色选择,并在更改时替换对象背景颜色
- 如何使用JS禁用表行,并在MYSQL中插入所选选项
- Node.js上的WebSocket,并在所有连接的客户端之间共享消息
- OpenLayers在悬停时高亮显示功能,并在单击时选择
- 将循环中的两个文本框相乘,并在第三个文本框上显示结果
- 获取屏幕截图并在电子邮件中发送的按钮
- CSS/HTML:更改文本的值并在悬停时从中心展开
- 使用php脚本验证访问者的年龄,并在不刷新的情况下根据结果加载iframe
- Sails.js:我可以将一些服务/模型打包为npm并在Sails.jss应用程序中加载npm吗
- AJAX调用并在Node中获取返回数据
- 从服务器获取数据并在选择控件中使用ng选项无法显示选项
- 从数组中删除重复条目,并在javascript中按顺序排列