2014-01-07 4 views
0

Я не могу разобрать несколько объектов JSON на успех ajax. Но я могу, когда я получу единственный объект JSON.Ajax multiple object return - Parsing

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"]); 
    } 
}); 

PHP код для одного объекта JSON

$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", "имя": "Malbari-Product1", "Brand_ID" : "1", "category_id": "1", "colour_id": "2", "occasion_id": "2", "цена": "599", "скидка": "10", "small_img":» images/products_small/1.png "," big_img ":" images/products_big/1.jpg "," seller_id ":" 1 "}

PHP-код для нескольких объектов JSON

$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", "имя": "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", "скидка": нулевой, "small_img": "изображения/products_small/6.png", "big_img": "изображения/products_big/6.jpg "," seller_id ":" 2 "}

Я предполагаю, что в случае нескольких объектов я получаю только одну строку вместо нескольких объектов JSON.

Пожалуйста, помогите.

+0

'JSON.parse' * не требуется. 'dataType:« JSON »,' должен сказать jQuery, чтобы сделать это для вас. –

+0

Можете ли вы вставить некоторые примеры возвращаемых наборов данных, поэтому у нас есть идея того, что мы рассматриваем? – Fallenreaper

+0

Вам нужно запустить цикл в ответе, когда он возвращает несколько объектов. –

ответ

0

Не хотите ли вы просто вернуть массив объектов JSON?

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

на основе ваших комментариев, кажется, что проблема с PHP find() и findOne() методов.

Чтобы использовать их одинаково, было бы удобно убедиться, что оба метода возвращают аналогичный результат, например массив с одним или несколькими объектами в нем. Таким образом, вы можете использовать их одинаково в своем javascript.

Что бы я сделал, это создать пустой массив и добавить результаты в качестве объектов в этом массиве. Вы можете вернуть этот массив из своих методов, а теперь вы получите echo свои результаты или сообщение об ошибке, вы просто сделаете echo json_encode($function_result_or_error_message);. Я, вероятно, добавлю ключ ошибки и сообщение в массив, прежде чем я это сделаю, чтобы иметь сообщение об ошибке, содержащееся в результате.

Для получения более подробной информации вы должны будете разместить свои php find() и findOne() методов.