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

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

Как отправить POST запрос без перезагрузки страницы и вернуть строку (jq, php)

Картинка

Иногда требуется обработать какие-либо данные в php без перезагрузки страницы и получить ответ в виде строки. В этом примере я покажу, как можно сделать данную процедуру.

Весь код html страницы я не буду выкладывать, ибо незачем, покажу только элемент, выполняющий запрос, jq скрипт, отправляющий запрос к нужному .php файлу и принимающий ответ, а так же сам php файл, обрабатывающий данный POST запрос.

Рассмотрим пример, в котором нам нужно при клике на button с id=1 вернуть из соответствующей строки таблицы базы данных MySQL текстовую строку и занести ее в этот самый button.

Создаем button:

<button id="1" onclick="work(this)">Батон</button>

Пишем скрипт отправляющий POST запрос и принимающий строку:

function work(obj) {
    $.post("work.php", {    // Указываем php файл
        what: "zapros",     // Передаем идентивикатор запроса
        data: obj.id        // Передаем идентивикатор элемента
    }, function (data) {
        $(obj).html(data)   // Получаем данные после обработки
    });
}

Обрабатываем запрос:

<?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 FROM sql_table WHERE id='$id'";
	$result = mysql_query($query)or die('Нет значений в БД');
	$data = mysql_fetch_array($result, MYSQL_ASSOC);
	if(isset($data['text'])) echo $data['text'];
	else echo 'В БД нет строки'.$id;
   }
} 
?>

Таким образом то, что выводит php скрипт с помощю функции echo попадает как ответ в наш javascript и передается текщему элементу.

5
Поделиться:
22522 08.04.2013 г.
Яндекс.Метрика