Как я могу заполнить поле формы возвращенными данными JSON?

#jquery #json #ajax

#jquery #json #ajax

Вопрос:

У меня есть двухэтапная форма. Первый шаг принимает вводимые пользователем данные и отправляет их в скрипт процессора. Скрипт процессора возвращает все данные, которые были ему отправлены, и некоторые новые данные, используя PHP json_encode. Код:

 $FirstName      = filter_var($_POST["FirstName"], FILTER_SANITIZE_STRING);
$LastName       = filter_var($_POST["LastName"], FILTER_SANITIZE_STRING);
//and so on for all other POST data
$output = json_encode(array('type'=>'Return', 'first_name'=>$FirstName, 'last_name'=>$LastName, 'other_data'=>'stuff'));

echo($output);
  

Я использую jQuery $.ajax submit для отправки данных из формы шага 1 в процессор. Мне нужно заполнить впоследствии загруженную форму шага 2 возвращенными данными. Я использую обработчик успеха для загрузки новой формы и пытаюсь заполнить поля — вот где я застрял.

Код jQuery:

 success: function(data){
    if(data.type == "Return"){
        $('#mContent').load('Form/ToPayPal.php');
        $('#first_name').val(data.first_name);
    } else {
        alert('bad');
    }
}
  

Как мне получить доступ к возвращенному массиву JSON и заполнить вновь загруженные поля формы соответствующими значениями? Я бы предпочел не перечислять каждый из них, возможно, использовать функцию ‘.each’ с ключом ‘ # и значением? Я могу изменить возвращенные ключи json, чтобы они соответствовали идентификаторам полей формы.

Ответ №1:

Мне пришлось поместить код в функцию завершения для .load() IE

 $('#mContent').load('Form/ToPayPal.php', function(){
    $.each( data, function( key, value ) {
        $( '#'   key ).val( value ); 
    });
});