Ajax и вывод результата обработки!

Печать RSS
416


2000 лет д.н.э.
0
Ну да, например окно авторизации, привата, меню, я рисую в одном пхп файле, ну и запрос практически одтнаков. Минимум js, это конечно все от привычки оперировать пыхом а не js. Писал прогу на js соответственно все рисовал им же, как то муторно, для меня. Выгоды в принципе не увидел, ну меньше трафика в ответе, зато js обьемнее. Х.з. может у меня подход не верный
А

Оранжевые штаны
0
Подход не верный
F
Автор
Землянин
0
%) что на счет моего вопроса конкретней?)

Голубые штаны
0
1. 6680, отдавай страницу в формате json, а на стороне клиента формируй разметку из того, что отдал скрипт в suyda.php

Например структура файла suyda.php:

<?
$result['status'] = 'Error';
$result['status_title'] = 'Ошибка';
$result['content'] = '';

if (если есть авторизовация){
	if (если есть права доступа){
		
		// что-то там сделать
		
		$result['status'] = 'OK';
		$result['status_title'] = 'Действие выполнено успешно';
		$result['content'] = 'Контент, который хочешь отдать';
		
	} else {
		$result['status_title'] = 'У вас не достаточно прав доступа';
	}
} else {
	$result['status_title'] = 'Вы не авторизованы';
}

exit( json_encode($result) );

А на стороне клиента на запрос вешай обработчик, все данные, которые пришли из файла suyda.php обрабатывай как json, проверяй значение status в пришедшем массиве и от него отталкивайся.
Например так:

<?
var param = {
	email: 'email@site.ru', 
	password: 'password', 
	remember: true
};
Ajax.post('/login', param, function(request){
	var data = parseJSON(request.responseText);
	if (data.status == 'OK') {
		alert('Действие выполнено успешно.\n Результат: '+data.status_title+'.\nЗапрашиваемый контент: '+data.content);
	} else {
		alert('Ошибка: '+data.status_title);
	}
});
Естественно, объект Ajax и ф-я parseJSON самописные и я их привел только для примера. Собственно, курить надо в эту сторону.
Изменил: Дмитрий (20.09.2012 / 13:47)
А

Оранжевые штаны
0
14. dima.london, лучше использовать уже объезженную технологию с заголовками:
$answer = new stdClass;
$answer->header = ['error' => 0, 'type' => 'xml'];
$answer->body = '<data>...</data>'
Ответ конечно может быть в любом формате, а на стороне клиента проверяем титлы.
F
Автор
Землянин
0
ух как все не просто) лан) спасибо) будем разбираться =)
А

Чатланин
0
Башка (20 Сентября 2012 / 14:00)
14. dima.london, лучше использовать уже объезженную технологию с заголовками:
$answer = new stdClass;
$answer->header = ['error' => 0, 'type' => 'xml'];
$answer->body = '<data>...</data>'
Ответ конечно может быть в любом формате, а на стороне клиента проверяем титлы.
тогда получается кошерно писать результат ответа (xml) в виде строки?

лучше тогда хранить все заголовки, тело сообщения в массиве а потом уже только билдить в json, xml (array->json, array->xml);
Изменил: Алексей (20.09.2012 / 14:22)
А

Оранжевые штаны
0
Не понял вопроса.

XML в любом случае пишется в виде строки ))) А потом полученный объект с заголовком и телом преобразуется в соотвествии с жсоном
Стикеры / Теги / Правила / Топ тем / Топ постов / Поиск