Выберите поле, контролируемое и заполняемое JavaScript с использованием JSON, PHP и MySQL - PullRequest
0 голосов
/ 15 декабря 2011

У меня есть поле выбора, в настоящее время заполняемое с использованием простого бита PHP для зацикливания.Цель этого поля - сделать заполнение формы проще и быстрее.Позволяя пользователю выбирать пресеты, которые доступны в поле выбора.

Когда в поле выбран параметр, активируется функция JavaScript, которая заполняет другие поля формы данными, связанными с этим параметром.

Пример ситуации, что будет делать JavaScript:

Пожалуйста, выберите опцию - {Вне пикового тарифа, Пакет текстовых сообщений, Пакет GPRS, Пользовательский}

Если пользователь выбираетпакет, который не равен Custom

Затем вставьте значения в поля {Разрешенный голос, Разрешенный SMS, Разрешенный доступ в Интернет, Разрешенный голосовой почты}

Вот скриншот формы и иллюстрациичто я пытаюсь сделать:

enter image description here

В настоящее время мои параметры заполнены исключительно PHP, например, так.

//prints out option list for select field    
foreach ($result as $array)
    echo '<option value="'. $array.' ">'. $array. '"</option>';

В настоящее время это работает нормальноЯ только что понял, что усложню свою жизнь на более поздней стадии разработки формы, поскольку буду использовать Javascript для управления этим полем, поэтому имеет смысл сделать все поле в JavaScript.

Это означает, что JavaScript будет:

  • Загружать данные из JSON, которые содержат данные для поля выбора и связанные с ним данные, которые будут передаваться в другие файлы.поля.
  • Заполните поле выбора данными из JSON.
  • Monitor поле для обмена.
  • Эффект другие поля в форме

Поскольку это для меня довольно новая территория, я надеялся, что вы, ребята, сможете указать мне правильное направление:

  • Передача данных в JavaScript наилучшим из возможных способов, есть ли у меня отдельные массивы (один для раскрывающегося списка, один для других значений полей) или объект лучше хранить все и просто передавать через JSON??
  • Как мне обрабатывать данные, передаваемые в JavaScript из PHP?Есть ли в JavaScript равные возможности для обработки массива в JavaScript?
  • Должен ли я выполнить всю подготовку на стороне PHP или позволить JavaScript просто обрабатывать необработанные данные?

Любые примеры кодаили подобные проекты будут действительно приветствоваться!:)

Как вы можете сказать, у меня в голове есть идея, как я хочу этого достичь, но я не знаю, является ли это лучшим способом.

Спасибо за ваше время

1 Ответ

1 голос
/ 15 декабря 2011

Хорошо, как бы я это сделал, если вы используете jQuery.

Учитывая, что выпадающий список с пресетами уже заполнен (я не вижу там никаких проблем).

Клиентская сторона (JS):

//On page load
$().ready(function() {  
    //Onchange event for the dropdown
     $('#presetDropdown').change(function(){
        //Get the dropdown value
        var preset = $(this).val();
         //Make the AJAX request
         $.ajax({  
                        type: "POST", 
                        //Ajax php file here:
                        url: 'ajax.php', 
                        dataType: 'json', 
                        //Which data to send:
                        data: "req=getPreset&preset="+preset , 
                        //Oncomplete
                        complete: function(data){

                             try{
                                var result = JSON.parse(data.responseText);
                                //Populate the fields with the returned data
                                 $('#field1').html(result[0]);
                                 $('#field2').html(result[1]);
                                 $('#field3').html(result[2]);
                               }catch(err){
                                  alert(err.message);
                               }


                  }
            }); 
     });

});

Вы также можете перебрать возвращенныемассив в JS с каждым () (см. документацию jQuery)

В конце PHP (ajax.php):

switch ($_POST['req'])
{
    case 'getPreset':
        //Get preset here en stuff into array:
        $aReturnArray = array($sValForField1,$sValForField2,$sValForField3);
    break;

}
//JSON encode the return array
echo json_encode($aReturnArray);

Вы можете значительно расширить это, но с этой информацией вы должны бытьв состоянии получить основы работы

...