从API查询创建下拉列表

时间:2016-10-04 21:52:14

标签: javascript arrays xml api dropdown

尝试创建一个脚本,该脚本将从API请求的XML文档中提取信息并将其放入2D数组中。

发出Get请求 https://api.example.com/v1.svc/users?apikey=MY-KEY&source=MY-APP&limit=1000

为每个看起来像

的用户生成XML
<User>
  <Id>Rdh9Rsi3k4U1</Id>
  <UserName>firstlast@email.com</UserName>
  <FirstName>First</FirstName>
  <LastName>Last</LastName>
  <Active>true</Active>
  <Email>firstlast@email.com</Email>
  <AccessLevel>Learner</AccessLevel>
</User>

每个用户都有相似的外观堆叠在一起。怎么可以将其擦入阵列?例如,第一个数组将有7&#34;列&#34;显示所有显示的信息,每个用户都有一行。 B'/ P>

1 个答案:

答案 0 :(得分:0)

所以我想到了将来寻找这类问题答案的人。基本上,我发现我试图达到的API(实际上并不是#34; citrowske.com&#34;如示例中所示)不允许使用CORS或jsonp,这使我无法使用代理。

显示的是与我最终使用的代码类似的示例(如下所示),以及显示的测试XML文件here

这是如何工作的基本解释,它使用代理获取XML文件并将其存储为&#34; xml&#34;发现为&#34;功能(xml)&#34;。然后搜索XML文档,每个部分以&#34; User&#34;得到&#34; FirstName&#34;和&#34;姓氏&#34;数据从中拉出并附加到名为&#34; yourdropdownbox&#34;的HTML部分的下拉列表中。

&#13;
&#13;
$.ajaxPrefilter( function (options) {
  if (options.crossDomain && jQuery.support.cors) {
    var http = (window.location.protocol === 'http:' ? 'http:' : 'https:');
    options.url = http + '//cors-anywhere.herokuapp.com/' + options.url;
    //options.url = "http://cors.corsproxy.io/url=" + options.url;
  }
});

$.get(
    'http://citrowske.com/xml.xml',
    function (xml) {
        //console.log("> ", xml);
        //$("#viewer").html(xml);
        
////////////////////////////////////
var select = $('#yourdropdownbox');
		select.append('<option value="">Select a User</option>');				
		$(xml).find('User').each(function(){											
		var FirstNames = $(this).find('FirstName').text();
	  var LastNames = $(this).find('LastName').text();
    
		select.append("<option value='"+ FirstNames +"'>"+FirstNames+" "+LastNames+"</option>");
	  });
	}
////////////////////////////////////

);
&#13;
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>

<select id="yourdropdownbox">

</select>
&#13;
&#13;
&#13;

作为一个说明,代理商并不知道它是非常安全的,所以请注意你使用它的原因。

另外,如果我想将数据转换为数组而不是每次添加时都附加

    var firstnamesarray = ["0"];
    var lastnamesarry = ["0"];
    var i = 0;

在正斜面的顶行之上然后替换:

    var FirstNames = $(this).find('FirstName').text();
    var LastNames = $(this).find('LastName').text();

    firstnamesarry[i] = $(this).find('FirstName').text();
    lastnamesarry[i] = $(this).find('LastName').text();
    i = i+1;

并替换了&#34; select.append&#34;第一&amp;姓氏带

    firstnamearry[i] & lastnamearry[i]

要查看工作示例,请查看jsfiddle here