ФорумПрограммированиеPHP для идиотов → Корректная передача массива из php в js

Корректная передача массива из php в js

  • Jekyl

    Сообщения: 9 Репутация: N Группа: Кто попало

    Spritz 14 марта 2012 г. 21:03

    День добрый!

    Php, к сожалению, знаю только по тем моментам, которые использовались в процессе написания дополнений к одному сайту. Сайт был построен на технологии mvc c поддержкой codeigniter. Поэтому когда дали задание написать меню, листьями которого являются товары, возникла проблема.
    В этот раз технология mvc не использовалась, есть index.php, являющийся солянкой из контроллера, модели и вьюхи (т.е. для вывода тэгов html заводится переменная, в которую они, собственно и присваиваются, в последствии ехом подается на экран) + отдельными файлами js и css. Меню (трехуровенвое) формируется из БД (id, parent_id, name), товар помимо прочих атрибутов имеет структуру (id, menu_id, name…), где menu_id=id меню. Меню формируется, генерируется, выводится. Отлично. При этом, т.к. меню имеет вид <ul><li></li></ul>, то в id li присваивается id категории меню. Далее в файле js
    $(document).ready(function() 
    {
    $("a").click(function()
    {
    cat_id=$(this).parent().attr("id");
    $.post("view_book/ReadID", {'cat_id':cat_id},function(data)
    {
    alert(data);
    });
    });
    });


    В индексе создается ф-ия ReadID, в которой происходит выборка из БД товаров по id, формируется массив и… собственно на этом месте и начинаются непонятки и мои незнания. Не знаю, насколько правильно было сделано в прошлый раз, но выглядело это так: в кодигнитере контроллере (который получил id из js через ф-ию post) в подобной ситуации формировался массив, который потом передавался в отдельный файл вьюхи через вис ($this->load->view("temp/tree",$Vdata);), в файле tree.php полученный массив обрабатывался, добавлялся в переменную наравне с тэгами html в апострофах и потом в заключении стояло ехо, который и выводил всю солянку из переменных. При этом тогда в js в ф-ии пост все что получили добавлялось к прописанному во вьюхе пустому диву с определенным айди:
    $.post("temp/searchDivision",{'sub_id':sub_id,'countDiv':countDiv},function(data)
    {
    $('#selectRoutes').append(data);
    });


    Заранее извиняюсь, если запутанно объясняю, но мне хотелось бы показать как тогда все это реализовывалось, причем, работало. В моей же нынешней ситуации во-первых, не получается передать в js массив с выборкой из БД, содержащий товары, относящиеся к данной категории меню, а во-вторых, т.к. только js является отдельным файлом, а все остальное сидит в индексе, то может это иначе реализовывается? И если да, то как? А если надо передавать выборку, то с помощью каких ф-ий это делается.
    Заранее спасибо за помощь :)
  • Sinkler

    Сообщения: 7958 Репутация: N Группа: в ухо

    Spritz 14 марта 2012 г. 21:47, спустя 44 минуты 15 секунд

    на самом деле как удобно, работает и ладно
  • Jekyl

    Сообщения: 9 Репутация: N Группа: Кто попало

    Spritz 14 марта 2012 г. 21:56, спустя 9 минут 7 секунд

    Sinkler, логично)
    Просто подумалось, вдруг есть какой-то более, так сказать, принятый метод решения подобных коллизий, а я по незнанию изобретаю велосипед, то хотелось бы быть в курсе :)

Пожалуйста, авторизуйтесь, чтобы написать комментарий!