繁体   English   中英

jQuery AutoComplete无法使用JSON响应

[英]jQuery AutoComplete Not Working with JSON Response

我有一个JSON响应,我正在尝试使自动完成功能正常工作,但出现了问题。

题:

这是我的jQuery ajax“成功”方法来处理返回的JSON字符串:(我在下面列出了JSON响应):

编码:

success: function( data ) {
    response( $.map( data.productSkus, function( item ) {
        return {
            label: item.product.name + " - " + item.product.sku,
            name: item.product.name,
            value: item.product.sku,
            id: item.product.id,
            product_sku: item.product.sku
        }
    }));
}

问题:

我确定为什么不显示选项的问题是因为每个数组元素在数组内容之前都有“ 0”:{ 如何访问这些? 我尝试了item [0],但似乎不起作用。 我知道这个脚本有效,当我必须在我的php代码中执行“ group by”时,它就崩溃了。 一旦我对它进行分组,就添加了“ 0”:{ 谢谢你的帮助!

JSON响应:

{
    "responseCode": 200,
    "responseVal": "Success",
    "productSkus": [
        {
            "0": {
                "id": 16685,
                "qty": 8,
                "reserved_qty": 0,
                "created": {
                    "date": "2014-01-20 17:32:31",
                    "timezone_type": 3,
                    "timezone": "Europe/Paris"
                },
                "updated": null,
                "deletedAt": null,
                "inventoryLocation": {
                    "id": 523,
                    "saleable": true,
                    "name": "M-10A-4",
                    "created": {
                        "date": "2013-04-11 18:46:11",
                        "timezone_type": 3,
                        "timezone": "Europe/Paris"
                    },
                    "updated": {
                        "date": "2013-04-11 18:46:11",
                        "timezone_type": 3,
                        "timezone": "Europe/Paris"
                    },
                    "deletedAt": null,
                    "warehouse": {
                    }
                }
            },
            "name": "Tiger Costume Brown"
        },
        {
            "0": {
                "id": 48917,
                "qty": 0,
                "reserved_qty": 0,
                "created": {
                    "date": "2014-01-20 23:44:15",
                    "timezone_type": 3,
                    "timezone": "Europe/Paris"
                },
                "updated": null,
                "deletedAt": null,
                "inventoryLocation": {
                    "id": 4056,
                    "saleable": true,
                    "name": "W-2E-26R-204",
                    "created": {
                        "date": "2014-01-20 23:30:58",
                        "timezone_type": 3,
                        "timezone": "Europe/Paris"
                    },
                    "updated": null,
                    "deletedAt": null,
                    "warehouse": {
                    }
                }
            },
            "name": "Tiger Costume White"
        }
    ],
    "productsCount": 7
}

我会在phpside上仔细检查一下,并可能对其进行纠正(只需将元素设置为零并直接附加)。 如果不可能,请在JS中更正它:

success: function( data ) {
    response( $.map( data.productSkus, function( item ) {
        if(item[0]){
            item[0].name = item.name
            item = item[0];
        }
        return {
            label: item.name + " - " + item.sku,
            name: item.name,
            value: item.sku,      // Not in the JSON
            id: item.id,
            product_sku: item.sku // Not in the JSON
        }
    }));
}

如果此方法不起作用,请改用typeof。

//编辑:废话。 改正了

//编辑:删除了产品密钥,因为它不在JSON中

//编辑:现在它几乎适合json

我的问题实际上在我的PHP代码中。 一起忽略这个问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM