Вернуть массив из php без перезагрузки страницы (jq, php)
Иногда требуется вернуть не строку, а именно массив с данными без обновления окна браузера. В этой небольшой статье я приведу пример того, как это можно сделать посредством jquery и post запроса к php с последующей обработкой полученных данных.
В запросе мы будем отправлять идентификатор операции и номер строки в таблице MySQL. В php обработаем $_POST запрос, сделаем выборку из БД и вернем массив, преобразованный в строку по средством функции json_encode($Array). В JS функции преобразуем полученную строку обратно в массив с помощью jQuery.parseJSON() и выполним необходимые операции.
Html:
<button id="1" onclick="work(this)">Батон</button> <input id="2" type="text"> <input id="3" type="text"> <input id="4" type="text">
JavaScript:
function work(obj) {
$.post("work.php", { // Указываем php файл
what: "zapros", // Передаем идентивикатор запроса
data: obj.id // Передаем идентивикатор элемента
}, function (data) { // Получаем данные после обработки
var result = jQuery.parseJSON(data); // Строку в массив
$("#2").val(result["text"]);
$("#3").val(result["des"])
$("#4").val(result["num"])
});
}
Php:
<?php // work.php
header("Content-Type:text/html;charset=UTF-8"); // Кодирока
if ($_SERVER['REQUEST_METHOD'] == 'POST') { // Если POST запрос
if ($_POST['what'] == 'zapros'){ // Нужный идентификатор запроса
$db = mysql_connect('localhost','root','') or die('Ошибка подключения к БД');
mysql_select_db('test', $db); // Подключаемся к БД
mysql_query("SET NAMES 'UTF8'");
$id = (int)$_POST['data']; // Т.к. нам нужно число
$query = "SELECT text,des,num FROM sql_table WHERE id='$id'";
$result = mysql_query($query)or die('Нет значений в БД');
$data = mysql_fetch_array($result, MYSQL_ASSOC);
if(!empty($data)) echo json_encode($data);
else echo 'В БД нет строки'.$id;
}
}
?>
1
Поделиться:
7886
08.04.2013 г.