我有这个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)。 当我在警报中测试它时,该值正常工作。
感谢任何帮助
答案 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;
全部谢谢!