下拉列表中未设置 AJAX 响应 JSON 数据
ajax response json data not set in dropdown
$(document).ready(function(){
$("#prjname").autocomplete("ajaxcomplete.php", {
selectFirst: true,
matchContains:true
}).result(function(event, item) {
var id=item;
$.ajax({
url: "db_data.php",
async: false,
data:"id="+id,
success: function(data)
{
}
})
});
});
IUn ajax 响应我可以得到这样的数据
[{"id":"1","name":"Analysis"},{"id":"2","name":"Coding"},{"id":"3","name":"Documentation"},{"id":"23","name":"ppt"}]
现在如何在下拉列表中填写数据?我已经尝试了如下代码:
var arr = $.parseJSON(data);
$('.act').empty();
$('#actname').append($('<option/>').attr("value","").text("Select Activity"));
arr.filter(function (option)
{
$('#actname').append($('<option/>').attr("value", option.id).text(option.name));
})
但它不会填充数据。
$.ajax({
url: "db_data.php",
async: false,
data:"id="+id,
success: function(data)
{
var arr = $.parseJSON(data);
$('.act').empty();
$('#actname').append('<option value="" > Select Activity</option>');
$.each(arr, function(i, item) {
$('#actname').append('<option value="'+item.id+'" >'+item.name+'</option>');
});
}
})
在成功回调中时:
success: function (data) {
response($.map(data, function (item) {
return {
label: item.name,
value: item.id
};
}));
}});
编辑:这里有一个很好的解释:http://www.jensbits.com/2011/08/24/using-jquery-autocomplete-when-remote-source-json-does-not-contain-label-or-value-fields/
试试这个
$.ajax({
url: "db_data.php",
async: false,
data:"id="+id,
dataType:'json', //<---just to make sure the response is in JSOn so that you don't have to parse it again
success: function(data)
{
$('.act').empty();
$('#actname').append($('<option/>').attr("value","").text("Select Activity"));
$.each(data,function(i,v)
{
$('#actname').append($('<option/>').attr("value", v.id).text(v.name));
})
}
})
我不确定这是否是"正确"的做法,但通常为此,我将下拉列表构建为后端 PHP 脚本中的字符串,然后将该字符串返回到 ajax 调用。 然后你可以做一个简单的"select_field_id.innerHTML = returned_string"来填充下拉列表。
这样:在 PHP 中:
$selecthtml .= "<option value='" . $val . "'>" . $text . "</option>";
echo $selecthtml;
然后在 javascript 中:
document.getElementById("selectid").innerHTML = data;
同样,不确定这是否"正确",但它对我有用。
on success loop through options
success: function(data)
{
var arr = $.parseJSON(data);
$('.act').empty();
$('#actname').append('<option value="" > Select Activity</option>');
$.each(arr, function(i, item) {
$('#actname').append(new Option(item.name,item.id));
});
}
<script>
$(document).ready(function(){
$("#prjname").autocomplete("ajaxcomplete.php", {
selectFirst: true,
matchContains:true
}).result(function(event, item) {
var id=item;
$.ajax({
type: "POST",
dataType: "json",
url: "db_data.php",
data: "id="+id,
success: function(data)
{
alert(data);
$('.act').empty();
$('#actname').append($('<option/>').attr("value","").text("Select Activity"));
for (var i = 0, len = data.length; i < len; ++i)
{
var prj = data[i];
$('#actname').append($('<option/>').attr("value", prj.id).text(prj.name));
$('.project_id').val(prj.project_id);
}
}
})
});
});
</script>
这是我的解决方案。
相关文章:
- http请求使用html而不是json进行响应
- 在不同的javascript数组中对json响应进行排序
- Laravel数据表无效的JSON响应
- 我应该如何将响应数据保存在对象(json)中以获得更好的操作和性能
- 使用来自不同异步函数的响应创建一个json对象
- 无法访问响应 JSON 对象
- 使用 RESTful API,如果未定义特定的响应 json 级别,我如何在客户端不出错
- 使用官方 Node.js SendGrid API 发送电子邮件时,响应 JSON 中可能出现哪些错误消息
- 无法从响应 JSON 中删除 html 标记
- 当响应 JSON 对象数据计数为零时,AJAX 成功回调函数重定向到错误回调
- 拆分 AJAX 响应 (JSON)
- jquery ajax 响应中缺少响应 JSON
- AJAX返回200成功,但未能解析响应JSON
- 向声音云响应json添加一个变量
- Node.js请求-Can't获取REST响应(JSON)的属性
- 如何使用javascript在for循环中获取响应json数据
- 下拉列表中未设置 AJAX 响应 JSON 数据
- Fetch api,为什么我必须在响应json()上使用它,试图让承诺有意义
- 如何使用ajax响应JSON数据
- 响应.json() 上的“意外输出结束”错误