Javascript jQuery自动完成不使用JSON响应

Javascript jQuery自动完成不使用JSON响应,javascript,php,jquery,ajax,json,Javascript,Php,Jquery,Ajax,Json,我有一个JSON响应,我试图让autocomplete工作,但它有问题 问题: success: function( data ) { response( $.map( data.productSkus, function( item ) { return { label: item.product.name + " - " + item.product.sku, name: item.product.name,

我有一个JSON响应,我试图让autocomplete工作,但它有问题

问题:

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
        }
    }));
}
下面是我处理返回的JSON字符串的jQuery ajax“success”方法:(我在下面列出了我的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
        }
    }));
}
问题:

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”:{。如何访问这些内容?我尝试了项[0],但似乎不起作用。我知道这个脚本可以工作,当我不得不执行“分组方式”时,它就坏了在我的php代码中。一旦我完成了分组,它就添加了“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代码中。忽略这个问题。

您是否尝试过使用文本项['0']来获取该键?它可能应该是
项[0]。name
项[0].id
etcI刚刚注意到json响应中有两个对象,它们都映射到一个键--“0”。这可能是造成此问题的原因issue1@Ishita这是两个单独的对象,每个对象的键为“0”。没有名为“product”的属性JSON中的任何地方。我没有检查JSON的所有属性。你是对的ofc。似乎产品应该是“0”。@LargeTuna:跳过javascript中的产品。我将根据情况编辑我的帖子,直到不正确为止……没有sku,名称与“0”处于同一级别。这里发生了什么?请发布您的php代码,太抱歉了,我的不好,我修复了我的JSONSo。这个问题是clsoed吗?您可以删除您的帖子,或者提供一个类似问题的解决方案给未来的用户。试图删除它,但它说我不能,因为答案已经给出。Fuzzyma做出了有效的回复,我检查了Fuzzyma的答案是否正确。