我用Django框架來實現一個web項目。我從MongoDB數據庫中提取一組數據對象,並將它們設置爲組合框。我有兩個組合框,並且更改第一個中的值會更改第二個中的值。如何將字符串轉換爲JavaScript中的JSON?
這是我查看HTML文件的代碼。
<div class="form-group">
<div class="form-controls">
<label>By Product Code </label>
<select name="productCode" id="onecb">
<option></option>
{% for entry in product_code %}
<option value="{{ entry.code }}">{{ entry.product_name }}</option>
{% endfor %}
</select>
</div>
</div>
<!--<div class="form-group">
<label>By Product Code </label>
<input type="number" class="form-control" placeholder="Enter Product Code" name="productCode" maxlength="5" max="1000">
</div> -->
<div class="form-group">
<div class="form-controls">
<label>By Batch Code </label>
<select name="batchCode" id="twocb">
<option></option>
{% for entry in batch %}
<option value="{{ entry }}">{{ entry.batch_code }}</option>
{% endfor %}
</select>
</div>
</div>
這是我的JavaScript代碼。
<script>
var first = document.getElementById('onecb'), second = document.getElementById('twocb');
var ddlArray= new Array();
for(i = 0; i < second.options.length; i++) {
ddlArray[i] = second.options[i].value;
//var obj = JSON.parse(ddlArray[i]);
console.log(ddlArray[i]);
}
first.onchange = function (e) {
var val = e.target.value;
empty(second);
for (i = 0; i < ddlArray.length; i++) {
//if(ddlArray[i] == val){
addOption(ddlArray[i], second);
///}
}
};
function empty(select) {
select.innerHTML = '';
}
function addOption(val, select) {
var option = document.createElement('option');
option.value = val;
option.innerHTML = val;
select.appendChild(option);
}
</script>
控制檯輸出:
{'batch_code': 'B001', 'created_date': datetime.datetime(2016, 1, 16, 12, 57, 11, 394000), '_id': ObjectId('569a3e27f125be38311fe15a'), 'key_quntity': 12, 'product_code': 0}
{'batch_code': 'B002', 'created_date': datetime.datetime(2016, 1, 16, 12, 58, 21, 183000), '_id': ObjectId('569a3e6df125be38311fe167'), 'key_quntity': 21, 'product_code': 2}
但是當我取消這條線
//var obj = JSON.parse(ddlArray[i]);
它給這個錯誤
SyntaxError: JSON.parse: unexpected end of data at line 1 column 1 of the JSON data
-------- --------我想做什麼---------------------------------
我希望當我從第一個組合框中選擇一個產品代碼時,只有相對的批代碼被加載到第二個組合框。
例如:我在第一個組合框中選擇產品代碼二(2),然後將'B002'加載到第二個組合框。
-------------------編輯後------------------------- ---------------
根據答覆,我得到的只有產品編號和批次代碼:
{'product_code': 0, 'batch_code': 'B001'}
{'product_code': 2, 'batch_code': 'B002'}
{'product_code': 1, 'batch_code': 'B089'}
,但我仍然得到同樣的錯誤。
這不是有效的JSON。 – Pointy
@Pointy,我從mongoDB數據庫獲取數據,我想迭代這個obect,並分別拿'產品代碼'和'批代碼'。 – uma
通過調用它們各自的toString()方法使ObjectId和datetime成爲一個字符串。 – WitVault