Javascript 如何将JSON转换为可用于绑定下拉列表中的值的数组?
我有一个可以生成JSON的应用程序,然后我将其作为GoogleCharts API的输入来绘制不同的可视化效果。此web应用程序的页面采用HTML格式。 假设我有一个JSON,它有一个医院的科室列表,比如:Javascript 如何将JSON转换为可用于绑定下拉列表中的值的数组?,javascript,html,json,google-api,Javascript,Html,Json,Google Api,我有一个可以生成JSON的应用程序,然后我将其作为GoogleCharts API的输入来绘制不同的可视化效果。此web应用程序的页面采用HTML格式。 假设我有一个JSON,它有一个医院的科室列表,比如:[{“v”:“普通医学”},{“v”:“实验室”}] 如何使用Javascript将其转换为一个数组,该数组又可以用作下拉列表的选项值 我使用以下代码生成JSON: <?php $serverName = "forestroot"; //serverName\instanceName
[{“v”:“普通医学”},{“v”:“实验室”}]
如何使用Javascript将其转换为一个数组,该数组又可以用作下拉列表的选项值
我使用以下代码生成JSON:
<?php
$serverName = "forestroot"; //serverName\instanceName
$connectionInfo = array( "Database"=>"****", "UID"=>"****", "PWD"=>"****");
$conn = sqlsrv_connect( $serverName, $connectionInfo);
if( $conn ) {
//echo "Connection established.<br />";
}else{
echo "Connection could not be established.<br />";
die( print_r( sqlsrv_errors(), true));
}
$sql = "SELECT distinct([DEPT_NAME]) as dept FROM [Pristine11Dec15].[dbo]. [PACKAGE_REVN]";
$params = array();
$options = array( "Scrollable" => SQLSRV_CURSOR_KEYSET );
$result = sqlsrv_query( $conn, $sql, $params, $options);
if (sqlsrv_num_rows( $result ) > 0) {
while($row = sqlsrv_fetch_array($result, SQLSRV_FETCH_ASSOC)) {
$array[] = array('v'=>$row["dept"]);
}
}
echo json_encode($array);
sqlsrv_close( $conn);
?>
输出是[{“v”:“普通医学”},{“v”:“实验室”}]
当我在代码中使用JSON.parse时,我会在下拉列表中将选项设置为[object object]。我哪里做错了
var json = '[{"v":"General Medicine"},{"v":"Laboratory"}]';
分析数据并使用返回v
值的数组:
var list = JSON.parse(json).map(function (el) {
return el.v;
}); // [ "General Medicine", "Laboratory" ]
但是,您可以扩展它来为select
构建HTML:
var templ = '<option value="#{el}">#{el}</option>';
var options = JSON.parse(json).map(function (el) {
return templ.replace('#{el}', el.v, 'g');
}).join('');
var select = '<select>' + options + '</select>';
document.getElementById('menu').insertAdjacentHTML('beforeend', select);
var templ='#{el}';
var options=JSON.parse(JSON.map)(函数(el){
返回temp.replace('{el}',el.v',g');
}).加入(“”);
变量选择=“”+选项+“”;
document.getElementById('menu').insertAdjacentHTML('beforeend',select);
分析数据并使用返回v
值的数组:
var list = JSON.parse(json).map(function (el) {
return el.v;
}); // [ "General Medicine", "Laboratory" ]
但是,您可以扩展它来为select
构建HTML:
var templ = '<option value="#{el}">#{el}</option>';
var options = JSON.parse(json).map(function (el) {
return templ.replace('#{el}', el.v, 'g');
}).join('');
var select = '<select>' + options + '</select>';
document.getElementById('menu').insertAdjacentHTML('beforeend', select);
var templ='#{el}';
var options=JSON.parse(JSON.map)(函数(el){
返回temp.replace('{el}',el.v',g');
}).加入(“”);
变量选择=“”+选项+“”;
document.getElementById('menu').insertAdjacentHTML('beforeend',select);
var arr=JSON.parse(这里是您的JSON字符串)代码>可能重复的请提供您尝试的代码和预期输出。另外,我认为您可以使用当前的对象数组来生成select选项值var deptArray=JSON.parse(string.map)(obj=>obj.v)
,可以通过添加以下内容来扩展该数组以返回选项元素的文档片段:.reduce((frag,v)=>{frag.appendChild(new option(v,v));return frag},document.createDocumentFragment())
var arr=JSON.parse(这里是您的字符串)代码>可能重复的请提供您尝试的代码和预期输出。另外,我认为您可以使用当前的对象数组来生成select选项值var deptArray=JSON.parse(string.map)(obj=>obj.v)
,可以通过添加以下内容来扩展该数组以返回选项元素的文档片段:.reduce((frag,v)=>{frag.appendChild(new option(v,v));return frag},document.createDocumentFragment())
。我认为使用DOM方法和元素而不是标记更干净,但每个方法和元素都有自己的…我认为使用DOM方法和元素而不是标记更干净,但每个方法和元素都有自己的…