используя jquery $ .post () для возврата нескольких значений - PullRequest
3 голосов
/ 09 января 2011

Я пытаюсь использовать $ .post () следующим образом:

$.post("file.php", { file_id: $(this).val()}, function(data){...} Затем file.php выполняет запрос к базе данных и возвращает массив с заголовком, описанием и ссылкой на изображение.

Теперь я смогу обновить .val() для полей формы для каждого из них.Я понимаю, как сделать это для одной переменной, это будет просто следующее:

$.post("file.php", { file_id: $(this).val()}, function(data){ 
   $('#title').val(data);
}

Но как мне получить возвращаемые данные, которые будут распознаваемы в jquery как отдельные переменные или как массив?

Заранее спасибо

Ответы [ 2 ]

7 голосов
/ 09 января 2011

См. документы для $ .post . Четвертый параметр - это dataType. Вы можете установить это в JSON, чтобы ваши возвращаемые данные были проанализированы в объект или массив JavaScript.

$.post(
   "file.php", 
   { file_id: $(this).val() }, 
   function(data){ $('#title').val(data.title); $('#para').val(data.paragraph); },
   'json');

В вашем файле file.php вы можете сделать что-то вроде

<?php
$return_data=array('title'=>'Fishes Go To Market','paragraph'=>'Lots of stuff');

header('Content-Type: application/json');
echo json_encode($return_data);
exit();

Не забудьте включить header (), чтобы jQuery знал, что ваши данные должны быть в формате JSON, и использовать json_encode, чтобы они правильно форматировались.

См. Документы json_encode для получения дополнительной информации и документы для заголовка . Помните, что перед заголовком () не должно быть никаких других выходных данных и печать данных json_encoded, иначе заголовок и JSON будут недействительными.

3 голосов
/ 09 января 2011

Самый простой способ - вернуть значения в формате JSON.Вам нужно будет преобразовать ваш массив в JSON на сервере (для этого доступно множество серверных библиотек).И измените ваш метод .post(), чтобы он возвращал данные в формате JSON, добавив четвертый параметр, например:

$.post("file.php", { file_id: $(this).val()}, function(data) { ... }, "json");

. Затем вы можете заполнить переменные так же просто, как:

$('#title').val(data.title);
$('#description').val(data.description);
...