#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 );
});
});