Я больше не прошу у вас денежку.

Просто почеши меня! =)
Главная :: Программирование (Php, С#, WPF)

Вернуть массив из 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
Поделиться:
5559 08.04.2013 г.
Яндекс.Метрика