使用 AJAX 调用 asp 页面,然后使用从页面返回的 JSON 数据填充带有选项的 select 框

Using an AJAX call to asp page then using JSON data returned from page to populate a select box with options

我正在尝试根据从我的 ASP 页面返回的 JSON 数据填充 select 框:http://accdbmgr-001-site1.etempurl.com/ajax.asp

这是从服务器返回的数据:

{
  "data": [{
    "Lastname": "Roussel",
    "Firstname": "Donald"
  }, {
    "Lastname": "Sabourin",
    "Firstname": "Manon"
  }, {
    "Lastname": "Kelly",
    "Firstname": "Bruce"
  }]
}

但是,出于某种原因,它似乎无法将我的 JSON 数据添加到 select 框中。我希望选项显示为:Lastname, FirstName

<div id="test"></div>
<form>
  <select id="select1"></select>
</form>
$(document).ready(function() {
  $.get('http://accdbmgr-001-site1.etempurl.com/ajax.asp', {
    category: 'client',
    type: 'premium'
  }, function(data) {
    alert("success")
    //$("#test").html(data)
    var obj = JSON.parse(data);
    for (i in obj) {
      $('#select1').append(new Option(obj[i].Firstname, obj[i].Lastname));
    }
  });
});

主要问题是因为您正在遍历 obj,而您需要遍历 obj.data 数组。

另请注意,您可以使用 map() 构建一个字符串数组,然后您可以 append() 一次使逻辑更简洁、性能更高。

最后,您的代码正在创建一个 option 元素,其中 Firstname 作为元素文本,Lastname 作为 value。如果您希望文本采用 Lastname, Firstname 格式,您需要将文本明确设置为该格式。试试这个:

var obj = {
  "data": [{
    "Lastname": "Roussel",
    "Firstname": "Donald"
  }, {
    "Lastname": "Sabourin",
    "Firstname": "Manon"
  }, {
    "Lastname": "Kelly",
    "Firstname": "Bruce"
  }]
}

var options = obj.data.map(function(item) {
  return `<option>${item.Lastname}, ${item.Firstname}</option>`;
});
$('#select1').append(options);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="test"></div>
<form>
  <select id="select1"></select>
</form>

另请注意,如果您在请求中设置 dataType: 'json' 或使用 $.getJSON()

,则不需要 JSON.parse()