Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Как ajax (ом) обработать json из файла php (https://javascript.ru/forum/events/47243-kak-ajax-om-obrabotat-json-iz-fajjla-php.html)

Nevrali 15.05.2014 15:39

Как ajax (ом) обработать json из файла php
 
:help: :help: :help: Первый файл_________index.php:
<!DOCTYPE HTML> <html>
<head> 
    <meta charset='utf-8' />
	<meta http-equiv="content-type" content="text/html" />
	<title>зависимый выпадающий список</title>
    <script type='text/javascript' src='jquery.js'></script>
    <script type='text/javascript' src='handler.js'></script> 
</head>
<body>
<label for="year">Год
                            <select name="year" id="year">
     <option value="">...</option>
     <option value="2014">2014</option>
     <option value="2013">2013</option>
                            </select>
</label>
<label for="year">Марка
                             <select name='brand' id='brand'>

/* место для подгружаемого списка */

                             </select>
</body></html>

:help: :help: :help: Второй файл_________select.php:

<?php
$year = $_POST['year'];
$connect = new mysqli("localhost", "user", "password", "db_name");
$table="year_$year";
/* Посылаем запрос серверу */
if ($result = mysqli_query($connect, "SELECT DISTINCT brand FROM $table ")) {

    while($row = $result->fetch_array(MYSQL_ASSOC)) {
            $myArray[] = $row;
    }
    echo $myArray;
//echo json_encode($myArray);
}
$result->close();
$mysqli->close();

Json в результате выглядит вот так
[{"brand":"Alfa Romeo"},{"brand":"Acura"},{"brand":"Alfa Romeo\r\n"},{"brand":"Audi"}]



Сразу вопрос откуда взялось Alfa Romeo\r\n

:help: :help: :help: Третий файл_________handler.js:
$(document).ready(function(){
      $('#year').change(function(){
         var year = ($(this).val());// здесь определяю переменную по выбору
$.ajax({
        type: "POST",
        url: "select.php",

            ???? ____здесь не знаю что писать____?????


        failure: function(errMsg) {
            alert(errMsg);
        }
  });

         
      });
   });


Задача - определив выбор селекта отправить это значение в файл select.php ajax запросом.
Ну не получается у меня правильно сформировать этот ajax/
Как сгенерировать теги <option>и массив json сунуть по одному
Подскажите где 'золото зарыто', как его формировать.
Заранее Благодарствую!!!!:write:

aleks_lv 15.05.2014 23:23

ну грубо то так
$(document).ready(function(){
        $('#year').change(function(){
            var year = $(this).val();// здесь определяю переменную по выбору
            var data="year="+year;
            $.ajax({
                type: "POST",
                url: "select.php",
                data:data,
                dataType:"json"
        }).done(function(data){
                    for(var i=0;i<data.length;i++)
                    {
                      $('<option value="'+data[i].brand+'"> '+data[i].brand+'</option>').appendTo($("#id"))
                    }
                })
    });
});

Nevrali 02.06.2014 16:00

Вот так работает! спасибо за направление !!!!
$(document).ready(function(){
        $('#year').change(function(){
            var year = $(this).val();// здесь определяю переменную по выбору
            var data="year="+year;
$.ajax({
                type: "POST",
                url: "/php/select.php",
                dataType:"json",
                data: data,              
                success: function(data){
                    for(var i=0;i<data.length;i++)
                    {
                      $('<option value="'+data[i].brand+'"> '+data[i].brand+'</option>').appendTo($("#brand"));

                    }}
                });
    });
});

Nevrali 02.06.2014 17:05

А не подскажите, как правильно указать в =data= 2 параметра, хочу продолжить. Вот как то так я составил.

data="year="+year+"brand="+brand; // ВОТ ЗДЕСЬ У МЕНЯ ОШИБКА

$(document).ready(function(){
/* выбор бренда */    
        $('#brand').change(function(){
            var brand = $(this).val();// здесь определяю переменную по выбору
            var year = $('#year').val();
            var data="year="+year+"brand="+brand; //                                          ВОТ ЗДЕСЬ У МЕНЯ ОШИБКА
$.ajax({
                type: "POST",
                url: "/php/brand.php",
                dataType:"json",
                data: data,              
                success: function(data){
                    for(var i=0;i<data.length;i++)
                    {
                      $('<option value="'+data[i].model+'"> '+data[i].model+'</option>').appendTo($("#model"));

                    }}
                });
    });
});

depp 03.06.2014 17:25

$(document).ready(function(){
/* выбор бренда */    
        $('#brand').change(function(){
            var data= {
                year:   $('#year').val(),
                brand: $(this).val()
            }
$.ajax({
                type: "POST",
                url: "/php/brand.php",
                dataType:"json",
                data: data,              
                success: function(data){
                    for(var i=0;i<data.length;i++)
                    {
                      $('<option value="'+data[i].model+'"> '+data[i].model+'</option>').appendTo($("#model"));

                    }}
                });
    });
});

Nevrali 08.06.2014 01:28

Если не сложно не подскажите как сделать так,что бы в селект не вбивались пустые ключи из БД
НАПРИМЕР
json выглядит так
[{"brand":"Alfa Romeo"},{"brand":""}], т.е. второй ключ из Базы Данных приходит пустой. И получается,что селект выглядит ТАК
<select id="brand">
              <option value="eter"> Alfa Romeo </option>
              <option value="">  </option>                           // А вот эта строчка не нужна
</select>

Где искать ответ в JavaScript или в PHP?

Erolast 08.06.2014 09:14

Ну пройдись циклом, удали лишнее. Лучше в php.

Nevrali 27.07.2014 19:25

Была ошибка в записи БД, СПАСИБО!!!!


Часовой пояс GMT +3, время: 04:46.