在jQuery中使用JSON数据时出现错误:“无法使用'in'运算符来搜索长度”

时间:2016-03-15 05:10:00

标签: jquery json ajax

我收到了这个错误:

  

未捕获的TypeError:无法使用'in'运算符在

中搜索“length”

我使用ajax函数,它可以毫无问题地为我提供干净的JSON数据:

    $.get(
        ajax_url,
        data,
        function(data) { // AJAX callback
            $("#tt").html(data);              //insert server response
            fill_json(data);
        }// End AJAX callback

但是,我认为我的fill_json(data);函数中可能存在错误:

var fill_json = function(data){
        $.each(data, function(key, value) {
            var tblRow = "<tr>" + "<td>" + key.ID + "</td>" +
            "<td>" + key.post_title + "</td>" + "<td>";
            $(tblRow).appendTo("#testajax tbody");
        });
};
BTW,这是使用您通过AJAX检索的JSON数据的最简单方法吗?

我的 JSON 数据如下所示:

{"ID":"4066","post_title":"TATTOO SLEEVES","category":"Apparel & Accessories","slug":"apparel-and-accessories","supplier_company":"\u682a\u5f0f\u4f1a\u793e\u30bb\u30f3\u30bf\u30fc\u5546\u4e8b","allslug":"apparel-and-accessories, accessories, textiles, toys, gifts-toys-and-animation, english","allcatname":"Apparel & Accessories, Accessories, Textiles, Toys, Gifts, Toys & Animation, \u82f1\u8a9e"}]

2 个答案:

答案 0 :(得分:1)

在循环通过$ .parseJSON之前将数据变量解析为json格式

var fill_json = function(data){
    var jsonData=$.parseJSON(data); //change here
        $.each(jsonData, function(i) {
            var tblRow = "<tr>" + "<td>" + jsonData[i].ID + "</td>" +
            "<td>" + jsonData[i].post_title + "</td>" + "<td>";
            $(tblRow).appendTo("#testajax tbody");
        });
};

答案 1 :(得分:0)

 $.get(
        ajax_url,
        data,
        function(data) { // AJAX callback
            $("#tt").html(data);              //insert server response

var jsonData = $。parseJSON(data); //我的变化                 fill_json(jsonData);             } //结束AJAX回调

<强> fill_json

var fill_json = function(data){
        $.each(data, function(key, value) {
            var tblRow = "<tr>" + "<td>" + value.ID + "</td>" +
            "<td>" + value.post_title + "</td>" + "<td>";
            $(tblRow).appendTo("#testajax tbody");
        });
};