Javascript 通过AJAX引入JSON以填充下拉列表

Javascript 通过AJAX引入JSON以填充下拉列表,javascript,php,jquery,ajax,json,Javascript,Php,Jquery,Ajax,Json,我正在提取一些JSON数据,这些数据会有所不同。。。例如: 返回的数据可以是: [{"userID":"2779","UserFullName":" Absolute Pro-Formance"},{"userID":"2780","UserFullName":" AR Fabrication"},{"userID":

我正在提取一些JSON数据,这些数据会有所不同。。。例如:

返回的数据可以是:

[{"userID":"2779","UserFullName":" Absolute Pro-Formance"},{"userID":"2780","UserFullName":" AR Fabrication"},{"userID":"2781","UserFullName":" Banda Lucas Design Group"}]
或:

我试图做的是处理这个JSON来构建一个
列表

// Load in a drop-down as JSON
function LoadDropDown($url, $where, $id, $selectName){
    var $loading = '<div class="pageLoader" style="margin:0 auto !important;padding:0 !important;"><img src="/assets/images/ajax-loader.gif" alt="loading..." height="11" width="16" /></div>';
    var $t = Math.round(new Date().getTime() / 1000);
    var $container = jQuery($where);
    var options = {
            url: $url + '?_=' + $t,
            cache: false,
            type: 'POST',
            beforeSend: function(){
                    $container.html($loading);  
                },
            success: function(data, status, jqXhr){
                $html = '<select class="form-control" id="'+$selectName+'" name="'+$selectName+'">';
                $html += '<option value="0">- Select an Option -</option>';
                for(var i = 0; i < data.length-1; ++i) {
                    var item = data[i];
                    console.log(item.userID);
                }
                $html += '</select>';
                $container.html('<pre>' + data + '</pre>');
            },
            complete: function(jqXhr, status){},
            error: function(jqXhr, status, error){
                $container.slideDown('fast').html('<div class="alert alert-danger alert-dismissable"><button type="button" class="close" data-dismiss="alert" aria-hidden="true">&times;</button><i class="fa fa-exclamation-triangle fa-4x pull-left"></i><p><strong>Danger Will Robinson!</strong><br />There was an issue pulling in this page. Our support team has been notified, please check back later.</p></div>');    
            }
    };
    jQuery.ajax(options);
}
正在向我展示Firefox控制台中需要的内容。。。但是每行1个项目,每个(例如第一个JSON)
name:userID=1234
下一行
name:UserFullName=TheName

我如何获得它们以便构建我的

与:

我回来了:

2955 Object { userID="1355", UserFulleName="Me Myself And I"}


在options对象内,确保使用

JSON.parse(data)
或者在成功处理程序中,您可以使用

success:function() {
    var listB=$('#yourdropdownId');
    listB.empty();  
    $.each(result, function (index, item) {
        listB.append(
            $('<option>', {
                value: item.userID,
                text: item.UserFullName
            }, '<option/>'))
         });
    }

在options对象内,确保使用

JSON.parse(data)
或者在成功处理程序中,您可以使用

success:function() {
    var listB=$('#yourdropdownId');
    listB.empty();  
    $.each(result, function (index, item) {
        listB.append(
            $('<option>', {
                value: item.userID,
                text: item.UserFullName
            }, '<option/>'))
         });
    }

你不需要使用如此混乱的代码。同样在Ajax设置中
数据类型:“json”


你不需要使用如此混乱的代码。同样在Ajax设置中
数据类型:“json”


治愈:将我的循环更改为循环遍历返回的JSON中的每个项,获取它们的密钥,等等

var$dl=data.length;
对于(变量$i=0;$i<$dl-1;++$i){
var$keys=Object.keys(数据[$i]);
$html+=''+数据[$i][$keys[1]]+'';
}

治愈:将我的循环更改为循环返回的JSON中的每个项目,获取它们的密钥,等等

var$dl=data.length;
对于(变量$i=0;$i<$dl-1;++$i){
var$keys=Object.keys(数据[$i]);
$html+=''+数据[$i][$keys[1]]+'';
}

将数据类型:“json”放在ajax设置中。在选项中将数据类型选项设置为json,默认情况下,它是text/html,因此您的数据只是字符串,这些是答案,而不是注释。请随意发布,并获得一些代表!在我发布问题LOL后我就这么做了。但并没有真正回答真正的问题,所以我可能想再次访问。。。由于返回的JSON将始终包含每个元素的2个对象,因此每个拉取的元素名称可能不同。。。换句话说,我可能永远不会知道返回的对象的
名称
,然后您可以使用文本和值,请参见ajax设置中的put dataType:“json”。在您的选项中,将dataType选项设置为json,默认情况下它是text/html,因此您的数据只是字符串这些是答案,而不是注释。请随意发布,并获得一些代表!在我发布问题LOL后我就这么做了。但并没有真正回答真正的问题,所以我可能想再次访问。。。由于返回的JSON将始终包含每个元素的2个对象,因此每个拉取的元素名称可能不同。。。换句话说,我可能永远不会知道返回的对象的
名称
。当您可以使用文本和值时,看您是否正确,这是一个很好的解决方案。但速度更慢,因为您强制jQuery创建并解析每个数据。然而,您可以创建一个字符串并编写所有代码,如x+=''+userFullName+'';如果直接将x附加到DOM中,速度会更快。但是,我已经说过,你的解决方案也很好。@queval_j当使用数据类型:“json”时,数据不是已经被解析为json了吗。但是我认为你在创建字符串的第二个观点上是正确的。你是对的,是一个好的解决方案。但速度更慢,因为您强制jQuery创建并解析每个数据。然而,您可以创建一个字符串并编写所有代码,如x+=''+userFullName+'';如果直接将x附加到DOM中,速度会更快。但是,我已经说过,你的解决方案也很好。@queval_j当使用数据类型:“json”时,数据不是已经被解析为json了吗。但是我认为你关于创建字符串的第二个观点是正确的。请补充一些解释,说明这是如何解决问题的。如果您还没有这样做,请不要忘记对任何您认为有用的答案进行投票,并将一个答案标记为已接受(如果您想接受自己的答案,需要等待48小时)。请添加一些解释,说明这是如何解决问题的。如果您还没有这样做,请不要忘记对您认为有用的任何答案进行投票,并将一个答案标记为已接受(如果您想接受自己的答案,需要等待48小时)。
dataType: 'json'
JSON.parse(data)
success:function() {
    var listB=$('#yourdropdownId');
    listB.empty();  
    $.each(result, function (index, item) {
        listB.append(
            $('<option>', {
                value: item.userID,
                text: item.UserFullName
            }, '<option/>'))
         });
    }
$.getJSON('@Url.Action(" "," ")',
                { "youparametername": yourdata}, function (data) {
                    $.each(data, function (index, item) {
                    })
            });
var $dl = data.length;
for(var $i = 0; $i < $dl - 1; ++$i) {
    var $keys = Object.keys(data[$i]);
    $html += '<option value="' + data[$i][$keys[0]] + '">' + data[$i][$keys[1]] + '</option>';
}