Показать сообщение отдельно
  #33 (permalink)  
Старый 29.06.2010, 00:37
Интересующийся
Отправить личное сообщение для Hivext Technologies Посмотреть профиль Найти все сообщения от Hivext Technologies
 
Регистрация: 20.12.2009
Сообщений: 15

Добавлен метод Redirect учитывающий масштабирование приложения на разные физические ноды.

Пример сохранения информации из HTML формы в базу данных через серверный javascript. Для редиректа между скриптами и страницами используется метод Redirect.

Адрес примера: http://76d2841ad8c1c0c6d8d387c198a5d07b.app.hivext.ru/

Установить пример под своим аккаунтом:
http://ide.hivext.ru/?solution=76d28...d387c198a5d07b

После установки примера будет доступно следующие содержание

Серверный javascript
------------------------------------------
user/add - получает параметры name, email и сохраняет в базе данных в типе users.

hivext.local.SetHeader("Content-Type", "text/html");

// Получим подпись устройства.
var signature = hivext.local.GetDeviceSignature();

// Формируем объект.
var users = {
    name : hivext.local.GetParam("name"),
    email : hivext.local.GetParam("email")
}

// Создаем объект в базе данных.
var response = hivext.data.base.CreateObject(appid, signature, "users", users);

// Если произошла ошибка отправляем на failed.html
if(response.result != 0) return hivext.local.Redirect("/failed.html");

// Если ошибки нет отправляем на showusers
return hivext.local.Redirect("/showusers");​


templates/showusers - ejs шаблон генерирующий html страницу с таблицей добавленных пользователей.

<html>
    <head>
        <title><%= title %></title>
    </head>
    <body>
        <h2><%= title %></h2>
        <table border="1">
        <% for(var i=0; i<users.length; i++) {%>
        <tr>
            <td><%= users[i].id %></td>
            <td><%= users[i].name %></td>
            <td><%= users[i].email %></td>
        </tr>
        <% } %>
        </table>
        <a href="index.html">Back</a>
    </body>
</html>​


showusers - скрипт вызывающий шаблон templates/showusers и передающий ему данные из таблицы users.

//////////////////////////////////////////////////
// Пример работы с шаблоном templates/showusers.
//////////////////////////////////////////////////

// Укажем ноде что данные отдаются в html формате.
hivext.local.SetHeader("Content-Type", "text/html");

// Получим подпись устройства.
var signature = hivext.local.GetDeviceSignature();

// Запрашиваем объекты users из базы данных.
var users = hivext.data.base.GetObjects(appid, signature, "users");

if(users.result == 0) { // Если запрос прошел без ошибок, продолжаем.

    // Вызов шаблона template/showusers и передача данных.
    var template = hivext.development.scripting.eval(appid, signature, "templates/showusers", {
        title : "Show users",
        users : users.objects
    });

    if(template.result == 0) return template.response;
    else return template.error;

}

return users.error;​


Модель данных
------------------------------------------
users - содержит поля id, name, email. В типе users хранятся добавляемые объекты.

Ресурсы
------------------------------------------
public_html/index.html - страница с формой, при успешном сохранении данных редирект на скрипт showusers, если ошибка на failed.html

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ru"> 
    <meta http-equiv="Cache-Control" content="no-cache, no-store, max-age=0, must-revalidate" />
    <meta http-equiv="Pragma" content="no-cache" />
    <meta http-equiv="Expires" content="Fri, 01 Jan 1990 00:00:00 GMT" />
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <meta name="robots" content="all" />
    <title>HTML Form Example</title>

    <body>
        <b>Add new customer</b>
        <form method="post" action="user/add">
            Name <input name="name" value="Hello World" /><br />
            Email <input name="email" value="hello@world.com" /><br />
            <input type="submit" value="Add" />
        </form>
    </body>

</html>
​


public_html/failed.html - страница с отображением ошибки отравки данных​​​​​​​​​

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ru"> 
    <meta http-equiv="Cache-Control" content="no-cache, no-store, max-age=0, must-revalidate" />
    <meta http-equiv="Pragma" content="no-cache" />
    <meta http-equiv="Expires" content="Fri, 01 Jan 1990 00:00:00 GMT" />
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <meta name="robots" content="all" />
    <title>HTML Form Example</title>

    <body>
        <h1>Failed!</h1>
        <a href="index.html">Try again</a>
    </body>
</html>​

Последний раз редактировалось Hivext Technologies, 29.06.2010 в 00:40.
Ответить с цитированием