如何在ajaxcall之后为select选择选项值

时间:2017-01-06 13:42:03

标签: javascript php jquery ajax

我有这个HTML:

<script>
function get(name){
if(name=(new RegExp('[?&]'+encodeURIComponent(name)+'=([^&]*)')).exec(location.search))
  return decodeURIComponent(name[1]);
}

//url: localhost/web/index.php?name='whatever'
var value = get('name');

$(document).ready(function(){
$('select').select2();  

$.ajax({
type: "POST",
url: 'getValues.php',
data: {'test': $("#test").val(),'isAjax':true},
dataType:'json',
success: function(data) {

   var select = $("#test"), options = '';
   select.empty();      
   for(var i=0;i<data.length; i++)
   {
    options += "<option value='"+data[i].id+"'>"+ data[i].name +"</option>";   
   }

   select.append(options);
}
});
});
</script>

这个ajax代码:

$stateProvider.state("abc",{
   url:'/abc',
    views:{
    '':{
        templateUrl: 'abc.html',
        controller:'MyController' <-- it's also attached to subviews
    },
    'header@abc':{
        templateURL:'...'
    },
    'content@abc':{
       templateURL:'...'
     }
   }

})

我需要将select的值设置为从url中获取,即(var value)。 当我在警报中测试它时,该值正常工作。

感谢任何帮助

3 个答案:

答案 0 :(得分:2)

1)您可以在添加选项后使用.val()

select.append(options);
select.val(value);

2) 或者在构建选项html字符串时将选定的属性添加到具有相同值的选项。

options += "<option value='"+data[i].id+"' "+(data[i].id == value ? "selected" : "") +">"+ data[i].name +"</option>";   

答案 1 :(得分:0)

可能是导致问题的AJAX。您需要修剪()响应以删除返回数据末尾的空格。请尝试以下方法:

success: function(data) {
   var response = data.trim(), select = $("#test"), options = '';
   select.empty();      
   for(var i=0;i<response.length; i++)
   {
    options += "<option value='"+response[i].id+"'>"+ response[i].name +"</option>";   
   }

   select.append(options).val(value);
}

答案 2 :(得分:0)

我的问题解决了。

问题是返回的值有空格,从url取为+ 所以我更换了#34; +&#34; by&#34; &#34;

全部谢谢!