javascript - 在选择选项值中使用 Json - 由于双引号引起的错误

标签 javascript jquery json ajax

我有一个 ajax 请求,它返回用于选择表单输入的选项列表。我有一个 json 用于表示地址的每个选项的值。但是双引号会导致问题,只有第一个 { 会返回到后端。

查看 chrome dev tools 中的值我可以看到 chrome 识别的值是第一个 { 而不是整个 json。如何获取 select 的值以正确保存 json 值。

浏览器中出现的选项值为:

<option value="{" dept":="" "",="" "orgn":="" "pobx":="" "subb":="" "bnam":="" "aspen",="" "bnum":="" "dpth":="" "thor":="" "knoll="" road",="" "ddlo":="" "dplo":="" "town":="" "",="" "cnty":="" "surrey",="" "pcod":="" "gu9="" 2XZ",="" "ppco":="" "tpco":="" 2ep"}"="">ASPEN</option>

ajax 事件是:

$(document).ready(function () {
  $('#id_previous2_postcode').change(function () {
    var postcode2 = $(this).val()
    console.log(postcode2)
    $.ajax({
      url: '/users/prior_addresses_ajax/',
      data: {
        'postcode': postcode2
      },
      dataType: 'json',
      success: function (data) {
        options = data.property_choices.map(function (subarray) {
          return '<option value="' + subarray[0] + '">' + subarray[1] + '</option>'
        })
        $('#id_previous2_full_address').html(options)
      }
    })
  })
})

最佳答案

您可以使用 new Option 构造函数来避免字符串连接。这适用于任何字符串值。

const data = {
  property_choices: [
    ['value1', 'text1'],
    ['value2', 'text2'],
    ['value3', 'text3']
  ]
};

const select = document.querySelector('#id_previous2_full_address');

data.property_choices.forEach(subarray => {
  const option = new Option(subarray[1], subarray[0]);
  select.options.add(option);
});
<select id="id_previous2_full_address">
  <option>None</option>
</select>

如果值是一个对象而不是像我上面的示例那样的字符串,您可能需要调用 JSON.stringify(subarray[0])

关于javascript - 在选择选项值中使用 Json - 由于双引号引起的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46692962/

相关文章:

javascript - Bottlepy - 如何从 javascript 访问 Bottle 参数 {{var}}?

javascript - 如何检查文件的类型与其扩展名相同?

javascript - jQuery。单击时更改元素位置

ruby-on-rails - 如何在 Ruby 中使用 Mechanize 或 Faraday 发送 JSON 表单数据

javascript - 如何正确定位 JSON 响应来填充表

json - 如何在 JSON 中插入我的对象数组?

javascript - React native 和 Jest : How can I execute code that uses fetch?

javascript - 仅在屏幕上显示 DIV

javascript - 如何通过 PHP 更改 HTML 类?

javascript - 奇怪的 JavaScript 错误