За последние 24 часа нас посетили 18026 программистов и 1700 роботов. Сейчас ищут 1536 программистов ...

Составить запрос из нескольких таблиц join

Тема в разделе "PHP для новичков", создана пользователем _ne_scaju_, 12 фев 2018.

  1. _ne_scaju_

    _ne_scaju_ Старожил

    С нами с:
    25 ноя 2016
    Сообщения:
    2.149
    Симпатии:
    118
    Всем привет крутил вертел таблицы разным способом и не получается составить правильный запрос, чтобы он вытягивал все значения из них которые мне нужны.
    1. есть 2 таблицы из которых я хочу вытащить данные:
    таблица predmet_info выводим комменты инфу всякую
    PHP:
    1. CREATE TABLE `predmet_info` (
    2.   `id` int(11) NOT NULL,
    3.   `uid` int(11) NOT NULL COMMENT 'пользователя id',
    4.   `rid` int(11) NOT NULL COMMENT 'предмет id',
    5.   `title` varchar(255) NOT NULL COMMENT 'описание',
    6.   `description` varchar(255) NOT NULL COMMENT 'Комментарий'
    7. ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
    таблица user_predmet общая таблица связь предмета и пользователя,
    только сразу говорю, эта таблица связывает не верхнюю таблицу, а таблицу users и predmet
    PHP:
    1. CREATE TABLE `user_predmet` (
    2.   `id` int(11) NOT NULL,
    3.   `uid` int(11) NOT NULL COMMENT 'юзер id',
    4.   `rid` int(11) NOT NULL COMMENT 'предмет id'
    5. ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
    2. составил такой запрос:
    PHP:
    1.     if(isset($_SESSION['uid']))
    2.     {
    3.         # сохраняем сессию в переменную
    4.        $uid = $_SESSION['uid'];
    5.  
    6.         # глобальная переменная подключения к БД
    7.        global $pdo;
    8.  
    9.         $predmet = get_predmet(); # функция возвращает выбранный предмет
    10.  
    11.         $query = $pdo->prepare('
    12.            SELECT `tb1`.`id`, `tb1`.`uid`, `tb1`.`rid`, `tb1`.`title`, `tb1`.`description`,
    13.                     `tb2`.`uid`, `tb2`.`rid`
    14.            FROM `user_predmet` `tb2`
    15.            JOIN `predmet_info` `tb1`
    16.            ON `tb1`.`rid` = `tb2`.`rid`
    17.            WHERE `tb1`.`uid` = ?');
    18.         $query->execute([$uid]);
    19.         $query->fetchAll(PDO::FETCH_ASSOC);
    20.     }
    И что получаем таким запросом, пытаюсь вытащить данные из первой таблицы для пользователя с выбранным предметом.

    То есть пользователь выбирает предмет, и ему должны погрузиться комменты которые он писал ранее для этого предмета в разные дни.

    Данный запрос подгружает только один коммент, а мне нужно чтобы он подгружал все комменты для одного предмета определенного пользователя id которого находится в сессии.

    3. Что будет предпочтительней выбрать INNER JOIN, LEFT JOIN, RIGHT JOIN или просто JOIN?
    4. Жду ваших предложений или поправок в лучшую сторону, спасибо.
     
  2. Deonis

    Deonis Старожил

    С нами с:
    15 фев 2013
    Сообщения:
    1.521
    Симпатии:
    504
    Вообще-то, такой запрос скорее может подтянуть больше, чем вы того ожидаете. Вы отфильтровали из таблицы "predmet_info" записи для определенного пользователя, связь со второй таблицей у вас по ID предмета. Но этот ID предмета может быть и у текущего пользователя, и у еще надцать других.
    Из поставленной задачи, я в принципе не вижу смысла в таблице "user_predmet", т.к. у вас в таблице "predmet_info" есть всё необходимое: "uid", "rid".
    PHP:
    1. SELECT * FROM `predmet_info` WHERE `uid` = 1 AND `rid` = 2
     
    MouseZver нравится это.
  3. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.770
    Адрес:
    :сердА
    А чем они отличаются? Ответишь на этот вопрос, ответишь и на свой.
     
  4. _ne_scaju_

    _ne_scaju_ Старожил

    С нами с:
    25 ноя 2016
    Сообщения:
    2.149
    Симпатии:
    118
    @Deonis
    Думаю может ты прав может нет, потому что у меня эта таблица соединяет 2 других, users и predmet:
    users:
    PHP:
    1. CREATE TABLE `users` (
    2.   `id` int(11) NOT NULL,
    3.   `name` varchar(255) NOT NULL
    4. ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
    predmet:
    PHP:
    1. CREATE TABLE `predmet` (
    2.   `id` int(11) NOT NULL,
    3.   `naimenovanie` varchar(255) NOT NULL COMMENT 'название предмет'
    4. ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
    5. INSERT INTO `predmet` (`id`, `naimenovanie`) VALUES
    6. (1, 'Физика'),
    7. (2, 'Химия'),
    8. (3, 'Математика');
    Опишу дальнейшие действия:
    пользователь в форме выбирает предмет и нажимает кнопочку отправить, ему должна выпасть на экран инфа комментарии ранее добавленную в таблицах в первом посте.
    А в эту таблицу о которой ты пишешь что там все есть, я не знал как ее объединить с пользователем и комментарием, подумал добавлю uid и rid.
    Сейчас попробую вашу версию потом если будет желание обговорим данный ваш пост)
    --- Добавлено ---
    @Fell-x27
    Один раз читал чем они отличаются, нужно еще раз перечитать.
    --- Добавлено ---
    Протестировал запрос действует так же выводит 1 комментарий, а мне нужно вытащить все.
     
  5. _ne_scaju_

    _ne_scaju_ Старожил

    С нами с:
    25 ноя 2016
    Сообщения:
    2.149
    Симпатии:
    118
    @Deonis
    Перепроверил запрос вроде срабатывает правильно, такой легкий запрос нужно было сделать)
    Только в чем сахар я не могу вернуть json массив после перебора его в foreach(); пробую вернуть return json_encode($mass); он возвращает json данные только одного комментария из таблицы, а если комментов несколько как вернуть json нескольких данных?
     
  6. Dimon2x

    Dimon2x Старожил

    С нами с:
    26 фев 2012
    Сообщения:
    2.210
    Симпатии:
    185
    А зачем тут json использовать?
     
  7. _ne_scaju_

    _ne_scaju_ Старожил

    С нами с:
    25 ноя 2016
    Сообщения:
    2.149
    Симпатии:
    118
    @Dimon2x
    я его просто передаю в js:
    Код (Javascript):
    1. <script>
    2. $(function(){
    3.     var data = <?php echo $json; ?>;
    4.     $('#eventCalendar').eventCalendar({
    5.         jsonData: data,
    6.         startWeekOnMonday: true,
    7.         openEventInNewWindow: true,
    8.         dateFormat: 'dddd DD-MM-YYYY',
    9.         showDescription: false,
    10.         locales: {
    11.             locale: "ru",
    12.             txt_noEvents: "Нет запланированных событий",
    13.             txt_SpecificEvents_prev: "",
    14.             txt_SpecificEvents_after: "события:",
    15.             txt_NextEvents: "Следующие события:",
    16.             txt_GoToEventUrl: "", /*url адрес*/
    17.             moment: {
    18.                       "months" : [ "Январь", "Февраль", "Март",
    19.                                        "Апрель", "Май", "Июнь",
    20.                                        "Июль", "Август", "Сентябрь",
    21.                                        "Октябрь", "Ноябрь", "Декабрь" ],
    22.                 "monthsShort" : [ "Янв", "Фев", "Мар",
    23.                                         "Апр", "Май", "Июн",
    24.                                          "Июл", "Авг", "Сен",
    25.                                          "Окт", "Ноя", "Дек" ],
    26.                    "weekdays" : [ "Воскресенье", "Понедельник","Вторник",
    27.                                          "Среда","Четверг","Пятница","Суббота" ],
    28.              "weekdaysShort" : [ "Вс","Пн","Вт",
    29.                                          "Ср","Чт","Пт","Сб" ],
    30.                 "weekdaysMin" : [ "Вс","Пн","Вт",
    31.                                        "Ср","Чт","Пт","Сб" ]
    32.             }
    33.         }
    34.     });
    35. });
    36. </script>
    И дальше работаю с ним. Или можно без него как то обойтись?
     
  8. Dimon2x

    Dimon2x Старожил

    С нами с:
    26 фев 2012
    Сообщения:
    2.210
    Симпатии:
    185
    @_ne_scaju_ Что ты хочешь вообще сделать с данными?
     
  9. Deonis

    Deonis Старожил

    С нами с:
    15 фев 2013
    Сообщения:
    1.521
    Симпатии:
    504
    Это у вас ответ на Ajax-запрос? Может на клиенте что-то не так делаете. В любом случае, я бы проверил перед отправкой данных переменную $mass.
    PHP:
    1. <?php
    2. file_put_contents('test.txt', var_export($mass, 1));
    --- Добавлено ---
    На первый свой вопрос, я ответ получил ))
     
  10. _ne_scaju_

    _ne_scaju_ Старожил

    С нами с:
    25 ноя 2016
    Сообщения:
    2.149
    Симпатии:
    118
    @Dimon2x
    Просто вывести их в календаре) для определенного юзера и все.
     
  11. Deonis

    Deonis Старожил

    С нами с:
    15 фев 2013
    Сообщения:
    1.521
    Симпатии:
    504
    Код (Javascript):
    1. var data = <?php echo $json; ?>;
    2. console.log(JSON.parse(data)); // что в консоли видите?
     
  12. _ne_scaju_

    _ne_scaju_ Старожил

    С нами с:
    25 ноя 2016
    Сообщения:
    2.149
    Симпатии:
    118
    Uncaught SyntaxError: Unexpected token ;
     
  13. Deonis

    Deonis Старожил

    С нами с:
    15 фев 2013
    Сообщения:
    1.521
    Симпатии:
    504
    Кавычки... Сразу не обратил внимание.
    Код (Javascript):
    1. var data = '<?php echo $json; ?>';
    2. console.log(JSON.parse(data));
     
  14. _ne_scaju_

    _ne_scaju_ Старожил

    С нами с:
    25 ноя 2016
    Сообщения:
    2.149
    Симпатии:
    118
    И так по порядку, таблицы может позже покажу хотя в принципе все показал:
    Файл function.php:
    PHP:
    1. <?php
    2. # вытягиваем наш предмет для определенного пользователя
    3. function get_predmet()
    4. {
    5.     # если в сессии ID
    6.    if(isset($_SESSION['uid']))
    7.     {
    8.         # сохраняем сессию в переменную
    9.        $uid = $_SESSION['uid'];
    10.  
    11.         # глобальная переменная подключения
    12.        global $pdo;
    13.  
    14.         # выбираем наши предметы из базы
    15.        $checkUser = $pdo->prepare('
    16.            SELECT `tb1`.`id`, `tb1`.`naimenovanie`,
    17.                   `tb2`.`uid`, `tb2`.`rid`
    18.            FROM `predmet` `tb1`
    19.            LEFT JOIN `user_predmet` `tb2`
    20.            ON `tb1`.`id` = `tb2`.`rid`
    21.            WHERE `tb2`.`uid` = ?');
    22.         $checkUser->execute([$uid]);
    23.         $result = $checkUser->fetchAll(PDO::FETCH_ASSOC);
    24.  
    25.         echo '<form action="" method="POST" id="predm">';
    26.         echo '<select name="predmet">';
    27.         echo '<option>Выберие предмет</option>';
    28.  
    29.         # через массив перебираем наши предметы которые приходят из базы
    30.        foreach ($result as $key => $value)
    31.         {
    32.             $s = ($value['id'] == $key) ? 'selected': '';
    33.             printf('<option value="%s" %s>%s</option>', $value['id'], $s, $value['naimenovanie']);
    34.         }
    35.         echo '</select>';
    36.         echo '<input type="submit" value="Выбрать"/>';
    37.         echo '</form>';
    38.     }
    39.     return $_POST['predmet'];
    40. }
    41.  
    42.  
    43. # функция для календаря
    44. function get_events($predmet)
    45. {
    46.     # если в сессии есть ID юзера
    47.    if(isset($_SESSION['uid']))
    48.     {
    49.         # сохраняем сессию в переменную
    50.        $uid = $_SESSION['uid'];
    51.  
    52.         # глобальная переменная подключения
    53.        global $pdo;
    54.  
    55.         # вытягиваем данные из таблицы календарь
    56.        $query = $pdo->prepare('
    57.            SELECT
    58.            `id`, `uid`, `rid`, `color`, (unix_timestamp(`date`) * 1000) as `date`, `time`, `title`, `description`
    59.            FROM `predmet_info` WHERE `uid` = ? AND `rid` = ?');
    60.       $query->execute([$uid, $predmet]);
    61.         return $query->fetchAll(PDO::FETCH_ASSOC);
    62.     }
    63. }
    64. # формирую json данные из массива
    65. function get_json($arr)
    66. {
    67.         $data = [];
    68.  
    69.         # формируем массив
    70.        foreach($arr as $key => $item){
    71.             $data = [$key=>$item];
    72.         }
    73.  
    74.     return json_encode($data);
    75. }
    И вот файл в котором выводится сам календарь:
    PHP:
    1. <?php
    2. require_once 'config/db.php'; # подключаем базу
    3. require_once 'functions.php'; # подключаем функции для календаря
    4.  
    5. $predmet = get_predmet();       # Выводим список предметов
    6. $events = get_events($predmet); # Вывод календаря
    7. $json = get_json($events);      # Информация для дат если она есть комментарии и т.д.
    8. ?>
    9. <!DOCTYPE html>
    10. <html lang="en">
    11. <head>
    12.     <meta charset="UTF-8">
    13.     <title>Календарь событий</title>
    14.     <link rel="stylesheet" href="css/eventCalendar.css">
    15.     <link rel="stylesheet" href="css/eventCalendar_theme_responsive.css">
    16.     <script src="http://code.jquery.com/jquery.min.js"></script>
    17.     <script src="js/moment.js"></script>
    18.     <script src="js/jquery.eventCalendar.js"></script>
    19. </head>
    20. <body>
    21.  
    22. <div id="eventCalendar" style="width: 300px; margin: 100px auto;"></div>
    23.  
    24. <script>
    25. $(function(){
    26.     var data = '<?php echo $json; ?>';
    27.     console.log(JSON.parse(data)); // что в консоли видите?
    28.     $('#eventCalendar').eventCalendar({
    29.         jsonData: data,
    30.         startWeekOnMonday: true, /*если труе будет правильно дни недели*/
    31.         openEventInNewWindow: true,
    32.         dateFormat: 'dddd DD-MM-YYYY',
    33.         showDescription: false,
    34.         locales: {
    35.             locale: "ru",
    36.             txt_noEvents: "Нет запланированных событий",
    37.             txt_SpecificEvents_prev: "",
    38.             txt_SpecificEvents_after: "события:",
    39.             txt_NextEvents: "Следующие события:",
    40.             txt_GoToEventUrl: "", /*url адрес*/
    41.             moment: {
    42.                       "months" : [ "Январь", "Февраль", "Март",
    43.                                        "Апрель", "Май", "Июнь",
    44.                                        "Июль", "Август", "Сентябрь",
    45.                                        "Октябрь", "Ноябрь", "Декабрь" ],
    46.                 "monthsShort" : [ "Янв", "Фев", "Мар",
    47.                                         "Апр", "Май", "Июн",
    48.                                          "Июл", "Авг", "Сен",
    49.                                          "Окт", "Ноя", "Дек" ],
    50.                    "weekdays" : [ "Воскресенье", "Понедельник","Вторник",
    51.                                          "Среда","Четверг","Пятница","Суббота" ],
    52.              "weekdaysShort" : [ "Вс","Пн","Вт",
    53.                                          "Ср","Чт","Пт","Сб" ],
    54.                 "weekdaysMin" : [ "Вс","Пн","Вт",
    55.                                        "Ср","Чт","Пт","Сб" ]
    56.             }
    57.         }
    58.     });
    59. });
    60. </script>
    61. </body>
    62. </html>
    Вот по сути у меня есть 2 файла, я сейчас работаю только с ними.
    При выборе предмета, мы передаем наш пост в функцию get_events($predmet) дальше мы выбираем в этой функции для пользователя с выбранным предметов есть ли у него какие комменты для каких либо дней. Ну и дальше я передаю результат в третью функцию get_json($arr) в которой уже создаю json формат который передаю в js календаря.
     

    Вложения:

    • ffff.png
      ffff.png
      Размер файла:
      27,5 КБ
      Просмотров:
      4
    #14 _ne_scaju_, 12 фев 2018
    Последнее редактирование: 13 фев 2018
  15. Deonis

    Deonis Старожил

    С нами с:
    15 фев 2013
    Сообщения:
    1.521
    Симпатии:
    504
    @_ne_scaju_, вы предыдущий комментарий прочитали?
    --- Добавлено ---
    Вот блин... Ничего, что на каждой итерации, у вас просто перезаписывается значение $data? ))
    PHP:
    1. <?php
    2. foreach($arr as $key => $item){
    3.     $data = [$key=>$item];
    4.     // А должно быть, скорее всего, что так:
    5.     $data[] = [$key=>$item];
    6. }
     
  16. _ne_scaju_

    _ne_scaju_ Старожил

    С нами с:
    25 ноя 2016
    Сообщения:
    2.149
    Симпатии:
    118
    Да конечно читал, исправил, сейчас ответил за предыдущий комментарий ваш.
    На счет массива сейчас попробую, если была в этом затычка я просто фигею.
    Действительно, теперь выдает то что надо на выходе.
    --- Добавлено ---
    @Deonis
    js смотрим на скриншот что выдает, а вот календарь не выводит не каких комментов, кажется что зациклился. Эта строка же не цыклит console.log(JSON.parse(data)); думаю нет, она просто выводит инфу в консоль браузера.
     

    Вложения:

    • zzzz.png
      zzzz.png
      Размер файла:
      16,4 КБ
      Просмотров:
      2
  17. Deonis

    Deonis Старожил

    С нами с:
    15 фев 2013
    Сообщения:
    1.521
    Симпатии:
    504
    Данные теперь выводятся корректно, а вот структура для вашего календаря, похоже, что хромает. Беглый взгляд на этот плагин и формат данных, говорит, что цикл тут вообще лишний. Т.е. ваша функция get_json, если нет каких-то подводных камней, сводится всего к одной строке:
    PHP:
    1. <?php
    2. function get_json($arr)
    3. {
    4.     return json_encode($arr);
    5. }
     
    _ne_scaju_ нравится это.
  18. _ne_scaju_

    _ne_scaju_ Старожил

    С нами с:
    25 ноя 2016
    Сообщения:
    2.149
    Симпатии:
    118
    По поводу этого я согласен, можно сразу в функции вывести после запроса
    PHP:
    1. $result = $query->fetchall()
    2. return json_encode($result);
    Структура чего хромает, запросов таблиц, где истина?
    К стати теперь получается убрал одну функцию сделал все в одной там где выполняю запрос, и а js убрал кавычки:
    PHP:
    1. var data = <?php echo $events; ?>;
    таким образом комментарии выводятся, а если поставлю кавычки то то комменты не выводятся, только в лог уходят, а в первом случает если кавычек нет то в лог не доходят они.
     
    #18 _ne_scaju_, 13 фев 2018
    Последнее редактирование: 13 фев 2018
  19. Deonis

    Deonis Старожил

    С нами с:
    15 фев 2013
    Сообщения:
    1.521
    Симпатии:
    504
    Структура массива. Всё остальное не важно, т.к. вывод в консоль - это только проверки/дебага. В общем, я так понимаю, что теперь всё работает?
     
  20. _ne_scaju_

    _ne_scaju_ Старожил

    С нами с:
    25 ноя 2016
    Сообщения:
    2.149
    Симпатии:
    118
    Вроде разобрался, выводиться теперь как надо @Deonis спасибо за помощь.
    Теперь задача такова моя, чтобы при выборе предмета выводились данные без перезагрузки страницы, может кто поможет. Я знаю что нужно использовать ajax но если я использую функции как их обрабатывать когда я буду указывать скрипт?
    --- Добавлено ---
    Да все работает правильно, просто у этого плагина, была такая структура в ручную написан json формат я начал думать как обойти эту ерунду, и вспомнил про json_encode()
     
  21. Deonis

    Deonis Старожил

    С нами с:
    15 фев 2013
    Сообщения:
    1.521
    Симпатии:
    504
    Да, можно. Код инициализации плагина, вам нужно поместить в какую-нибудь функцию, куда передавать json-строку.
    Код (Javascript):
    1. function initCalendar (data) {
    2.    $('#eventCalendar').eventCalendar({
    3.         jsonData: data,
    4.         /* прочие опции */
    5.    });
    6. }
    С Ajax-ом знакомы?
     
  22. _ne_scaju_

    _ne_scaju_ Старожил

    С нами с:
    25 ноя 2016
    Сообщения:
    2.149
    Симпатии:
    118
    С Ajax если честно на вы, но пару примеров в ручную переписывал, и старался разобрать их. Инициализировать для чего, помоги разобраться)))
    --- Добавлено ---
    @Deonis
    Я думал что мне всего лишь нужно будет ajax запрос сделать типа:
    Код (Javascript):
    1. <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.3/jquery.min.js"></script>
    2. <script>
    3.     $( document ).ready(function() {
    4.     $("#btn").click(
    5.         function(){
    6.             sendAjaxForm('result_form', 'ajax_form', 'function.php');
    7.             return false;
    8.         }
    9.     );
    10. });
    11. function sendAjaxForm(result_form, ajax_form, url) {
    12.     jQuery.ajax({
    13.         url:     url, //url страницы (action_ajax_form.php)
    14.         type:     "POST", //метод отправки
    15.         dataType: "html", //формат данных
    16.         data: jQuery("#"+ajax_form).serialize(),  // Сеарилизуем объект
    17.         success: function(response) { //Данные отправлены успешно
    18.             result = jQuery.parseJSON(response);
    19.             document.getElementById(result_form).innerHTML = "";
    20.         },
    21.         error: function(response) { // Данные не отправлены
    22.             document.getElementById(result_form).innerHTML = "Ошибка. Данные не отправленны.";
    23.         }
    24.      });
    25. }
    26. </script>
     
  23. Deonis

    Deonis Старожил

    С нами с:
    15 фев 2013
    Сообщения:
    1.521
    Симпатии:
    504
    Типа да. Вот только после выполнения запроса, нужно еще об этом сообщить плагину.
    Код (Javascript):
    1. $.ajax({
    2.     // путь к обработчику на стороне сервера
    3.     url: 'path/to/handler.php',
    4.     // метод передачи: GET, POST, etc
    5.     type: 'GET',
    6.     // важно указать тип, чтобы JSON-строка не преобразовывалась в объект
    7.     dataType: 'text', // или html
    8.     // если нужно в запросе передавать какие-то данные
    9.     data: {
    10.         some_key_1: 'some_value_1',
    11.         some_key_2: 'some_value_2',
    12.     },
    13.     // в случае успешного завершения запроса, вызываем функцию инициализации календаря
    14.     success: initCalendar
    15. });
    16.  
    17. function initCalendar (data) {
    18.    $('#eventCalendar').eventCalendar({
    19.         jsonData: data,
    20.         /* прочие опции */
    21.    });
    22. }
    --- Добавлено ---
    Кстати, в самом плагине вроде бы реализовано получение данных Ajax-ом. Правда, этот запрос будет выполняться единожды, при первой инициализации плагина.
     
    _ne_scaju_ нравится это.
  24. _ne_scaju_

    _ne_scaju_ Старожил

    С нами с:
    25 ноя 2016
    Сообщения:
    2.149
    Симпатии:
    118
    Путь обработчика, по сути у меня это как раз файл function.php но сама обработка находится в функции пример выше посмотрите)
     
  25. _ne_scaju_

    _ne_scaju_ Старожил

    С нами с:
    25 ноя 2016
    Сообщения:
    2.149
    Симпатии:
    118
    @Deonis
    PHP:
    1. $.ajax({
    2.     url: 'function.php',
    3.     type: 'POST',
    4.     dataType: 'text',
    5.     data: {
    6.         some_key_1: <?php echo $predmet; ?>,
    7.     },
    8.     success: initCalendar
    9. });
    10.  
    11. function initCalendar (data) {
    12.    $('#eventCalendar').eventCalendar({
    13.         jsonData: data,
    14.        /* прочие опции */
    15.    });
    16. }
    После такого перезагрузка страницы происходит, одно не понял от куда ты взял some_key_1 и еще не понял после прочие опции ты имел введу чтобы повторил те же самые опции?