今天在开发一个 异步更新 select下拉列表时,遇到了一些问题,现记录下,以备以后遇到时可以查阅。
首先是:出现 非法标签错误,其原因是,在 eval json数据的时候,左右没有加括号,正确的格式应该是:eval(“(“+jsondata+”)”);
其次是在访问json数据时,采用jsondata.length想来遍历数据,但是每次都是显示undefined,查了很多原因,一开始一直以为是jquery的版本问题,后来才知道 json格式有两种 表示方法,
第一种:{“k1″:”v1″,”k2″:”v2″} ,这种数据格式返回的是 objcet对象,没有length属性
第二种:[["k1":"v1"],["k1":"v1"]] 这种数据格式是 数组形式,才有length属性
而在php中,经过json_encode 之后的数据 是第一种形式的数据,因此在jquery中,需要使用$.each函数来遍历方可使用。
//此函数的作用是,通过不同的类型获取不同的tag类型,从而填充select下拉列表。
function set_com_tags(comtype) {
$.getJSON(“api.php?m=selecttagtype&comtype=”+comtype, function(data) {
$(“#tag”).empty();
$.each(data, function(i,item){
$(“#tag”).append(“<option value=’”+i+”‘>”+item+”</option>”);
});
});
}