ajax - 计算 ajax/json 响应中的元素
问题描述
这非常简单,之前已经被问过很多次,但它只是让我不知道该由谁来做。我有 2 个下拉菜单,其中最后一个是从第一个的选择中填充的。那行得通,但是现在我想在响应中只有一个元素时为第二个下拉菜单预选。
功能:
$( "select[name='r53b']" ).change(function () {
var r53bID = $(this).val();
if(r53bID) {
$.ajax({
url: "/overfladeajax.php",
dataType: 'Json',
data: {'id':r53bID},
success: function(data) {
$('select[name="r53c"]').empty();
$('select[name="r53c"]').append('<option value="">Vælg Lagtykkelse</option>');
$.each(data, function(key, value) {
$('select[name="r53c"]').append('<option value="'+ key +'">'+ value +'</option>');
});
}
});
}
});
2种响应:
{"7":"2 x 100 \u03bcm HS 150 (totalt 200 \u03bcm t\u00f8rfilm)","8":"1 x 40 \u03bcm zink primer + 1 x 120 \u03bcm HS 150 (totalt 160 \u03bcm t\u00f8rfilm)"}
或者
{"2":"1 x 80 \u03bcm HS 150"}
如何进行附加,因此它还会选择只有一个可用的选项?
解决方案
您可以使用Object.keys(yourjson).length
获取 json 对象中键的长度,然后将计数1
添加selected
到该选项中。
演示代码:
var data = {
"2":"1 x 80 \u03bcm HS 150"
}
var count = Object.keys(data).length//get key length
console.log("length is "+count)
$('select[name="r53c"]').append('<option value="">Vælg Lagtykkelse</option>');
$.each(data, function(key, value) {
//if length is 1
if (count == 1) {
$('select[name="r53c"]').append('<option selected value="' + key + '">' + value + '</option>');
} else {
$('select[name="r53c"]').append('<option value="' + key + '">' + value + '</option>');
}
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<select name="r53c">
</select>
推荐阅读
- html - 如何在 HTML 中的点中设置图像渲染?
- mysql - 如何使用带日期的名称分组显示记录?
- javascript - 如何根据条件合并对象的数组属性?
- php - 将 PHP 代码从 mysql 移动到 ms sql server
- apache-spark - 通过在 Livy 上提交批量 POST 方法并跟踪作业,使用 Airflow 提交 Spark 作业
- c - C 中 exit() 的单元测试
- javascript - 使特定键的 onkeydown 事件仅发生一次
- java - 如何预测文本视图中可以容纳的字符总数?
- intellij-idea - 在 intellij protractor 中评估表达式 - 不在浏览器上执行任何任务。承诺相关?
- gensim - 存储在similarities.SparseMatrixSimilarity().index 中的内容