Использование jQuery $ .post () для возврата нескольких значений
Вопрос
Я пытаюсь использовать $ .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 как отдельные переменные, либо как массив?
заранее спасибо
Решение
Видеть Документы за $ .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();
Обязательно включите заголовок (), поэтому jQuery знает, что ваши данные должны быть JSON и использовать JSON_ENCODE, чтобы он отформатирован правильно.
Увидеть json_encode. Документы для получения дополнительной информации о том, а Документы на заголовке. Отказ Remeber У вас нет какого-либо другого вывода, приходится перед вашим заголовком () и печати данных JSON_ENCODED или заголовок, а также JSON, будет недействительным.
Другие советы
Самый простой способ - передать значения как JSON. Вам нужно будет преобразовать свой массив на JSON на сервере (есть много библиотеки на стороне серверов доступны для этого). И изменить ваше .post()
Способ возвращения данных как JSON, добавив четвертый параметр, как:
$.post("file.php", { file_id: $(this).val()}, function(data) { ... }, "json");
Затем вы можете заполнить ваши переменные так же легко, как:
$('#title').val(data.title);
$('#description').val(data.description);