javascript - 如何在 JavaScript 中将字符串转换为 JSON?

标签 javascript html json django combobox

我用Django框架实现了一个web项目。我从 MongoDB 数据库中获取一组数据对象并将它们设置为组合框。我有两个组合框,更改第一个中的值会更改第二个中的值。

这是我的 View 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”加载到第二个组合框中。

----------------编辑后------------------------ --------------

根据回复,我只得到产品id和批号是这样的:

{'product_code': 0, 'batch_code': 'B001'} 
{'product_code': 2, 'batch_code': 'B002'} 
{'product_code': 1, 'batch_code': 'B089'}

但我仍然得到同样的错误。

最佳答案

我认为你可以使用 RegExp 进行解析

var str = "{'batch_code': 'ikk', 'created_date': datetime.datetime(2016, 1, 16, 12, 57, 11, 394000), '_id': ObjectId('569a3e27f125be38311fe15a'),     'key_quntity': 12, 'product_code': 0}";
var reg1 = /(?:\'product_code\'\:)\s+(\w+)/;
var reg2 = /(?:\'batch_code\'\:\s+\')(\w+)/;
var product_code = reg1.exec(str)[1];//ikk
var batch_code = reg2.exec(str)[1];  //0

关于javascript - 如何在 JavaScript 中将字符串转换为 JSON?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35018618/

相关文章:

json - 反序列化返回不正确值的 JSON 数字

javascript - Highcharts 复杂柱形图

javascript - ionic 2 中的菜单

html - IE 中旋转 div 的样式和 js 事件问题?

javascript - Firefox 忽略 CSS3 转换?

html - 使用 CSS 访问样式自定义属性

json.Marshal 与 Encoder.Encode

php - 如何将 MySql 表中的行与 200 条记录的 JSON 数据匹配作为 PHP 中的输入

javascript - JS : If variable gets object from a function, 变量是否存储对象的内容或对象的链接?

javascript - 如何使用 API 调用中的 JSON 数据播放音频? (演讲者)