[英]Populating a Drop Down Menu (select)
我一直在尝试根据以下答案解决我的问题: 使用jQuery从数据库填充选择框
我试图实现那里答案中所说的内容,但是我在这里没有任何运气。 到目前为止,下拉菜单中出现的所有内容都是在其中启动的默认“ Stone”项目。
任何人都可以抽出一些时间来帮我解决问题。 我的代码本质上应该从一个MySQL数据库读取,该数据库具有150个以上的ID(从1开始),并在相同ID的行中使用相应的名称来填充加载时的下拉菜单。
下拉菜单在内部的示例:
相应的数据库将如下所示:
ID item_name
1 Stone
2 Grass
3 Diamond
我用来尝试执行此操作的代码是:
PHP (process_item_list.php):
$con = mysql_connect($DB_HOST,$DB_USER,$DB_PASSWORD);
$dbs = mysql_select_db($DB_NAME, $con);
$tableName = "itemlist";
$result = mysql_query("SELECT * FROM $tableName");
$data = array();
while ( $row = mysql_fetch_row($result) )
{
$data[] = $row;
}
echo json_encode( $data );
?>
jQuery / JavaScript
<script type="text/javascript">
$(function(){
var items="";
$.getJSON("process_item_lists.php",function(data){
$.each(data,function(index,item)
{
items+="<option value='"+item.id+"'>"+item.name+"</option>";
});
$("#tradeItems").html(items);
});
});
</script>
的HTML
<select id="tradeItems">
<option value="">Stone</option>
</select>
我也欢迎采取其他方式来做到这一点,只要它仍然可以填充加载的下拉菜单!
编辑:在无线的帮助下,PHP问题已修复。 这是从运行PHP文件得到的结果: http : //fogest.net16.net/mctrade/php/process_item_list.php当我使用警告框运行实际页面时,应给我ID和项目名称它们都返回undefined而不是正确的值。
http://fogest.net16.net/mctrade/php/process_item_list.php上的结果看起来不像您期望的那样,看起来像这样:
[ ["1","Stone","images\/stone.png"],
["2","Grass Block","images\/grass_block.png"],
/* snip a lot of rows */
]
但是您所期望的是这样的:
[ { "id":"1", "name":"Stone", "image?":"images\/stone.png"},
{ "id":"2", "name":"Grass Block","image?":"images\/grass_block.png"},
/* and so on */
]
我认为您将要使用mysql_fetch_assoc()
而不是mysql_fetch_row()
,这可能会为您提供适当的输出。
奖励:您可以通过在echo
之前添加一行来为响应提供适当的内容类型:
header("Content-type: application/json");
echo json_encode($data);
备注:当我检查http://fogest.net16.net/mctrade/php/process_item_list.php的源代码时,我在结尾处发现了这一点:
<!-- Hosting24 Analytics Code -->
<script type="text/javascript" src="http://stats.hosting24.com/count.php"></script>
<!-- End Of Analytics Code -->
这不应该是响应的一部分,它可能会使JSON解析器崩溃。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.