Ajax多个对象返回 - 解析

时间:2014-01-07 18:57:29

标签: javascript php jquery ajax json

我无法在ajax成功时解析多个对象JSON。但是,当我收到一个单个对象JSON时,我可以。

Ajax调用

$.ajax({
    url: "ajax/filter.php",
    dataType: "JSON",
    type: "POST",
    data: {
        category: $categoryArr,
        brand: $brandArr,
        occasion: $occasionArr,
        colour: $colourArr,
        price_min: $price_min,
        price_max: $price_max
    },
    success: function(data) {
        data = JSON.parse(data);
        $("#result").html(data["name"]);
    }
});

单个对象JSON的PHP代码

$products = R::findOne('products', $filterString, $filterArray); //returns single row from db
if (!empty($products)) {
    echo $products;
} else {
    echo "No Products are available for this search criteria";
}

结果:{“id”:“1”,“name”:“Malbari-Product1”,“brand_id”:“1”,“category_id”:“1”,“colour_id”:“2”,“occasion_id” “:” 2" , “价格”: “599”, “折扣”: “10”, “small_img”: “图像/ products_small / 1.png”, “big_img”: “图像/ products_big / 1.JPG”, “seller_id”: “1”}

多个对象JSON的PHP代码

$products = R::find('products', $filterString, $filterArray); //returns multiple rows from db
if (!empty($products)) {
    echo $products;
} else {
    echo "No Products are available for this search criteria";
}

结果:{“id”:“1”,“name”:“Malbari-Product1”,“brand_id”:“1”,“category_id”:“1”,“colour_id”:“2”,“occasion_id” “:” 2" , “价格”: “599”, “折扣”: “10”, “small_img”: “图像/ products_small / 1.png”, “big_img”: “图像/ products_big / 1.JPG”, “seller_id”:“1”} {“id”:“10”,“name”:“Malbari-Product6”,“brand_id”:“2”,“category_id”:“1”,“colour_id”:“1” “occasion_id”: “5”, “价格”: “350”, “折扣”:NULL, “small_img”: “图像/ products_small / 6.png”, “big_img”: “图像/ products_big / 6.JPG” “seller_id”: “2”}

我想,在多个对象的情况下,我实际上只得到一个字符串而不是多个对象JSON。

请帮忙。

2 个答案:

答案 0 :(得分:0)

你不想只返回一个JSON对象数组吗?

[ { "Name":  "Object1" }, { "DifferentObject": "Object2" }]

答案 1 :(得分:0)

根据您的评论,似乎问题出在php find()findOne()方法上。

为了以相同的方式使用它们,可以方便地确保两个方法都返回类似的结果,就像数组中包含一个或多个对象一样。这样你就可以在javascript中以相同的方式使用它们。

我要做的是创建一个空数组并将结果作为该数组中的对象添加。您可以从方法中返回该数组,现在只需echo结果或错误消息,您只需执行echo json_encode($function_result_or_error_message);即可。在我这样做之前,我可能会向数组中添加一个错误键和消息,以便在结果中包含错误消息。

有关详细信息,您必须发布您的php find()findOne()方法。