jQuery自动完成不使用JSON响应

时间:2014-04-14 21:08:59

标签: javascript php jquery ajax json

我有一个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":{。我如何访问这些?我试过了[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
}

2 个答案:

答案 0 :(得分:2)

我会在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

答案 1 :(得分:0)

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