2013-10-04 1 views
0

Я хочу создать приложение с интерфейсом HTML + JavaScript и back-end Progress4GL.Интерфейс JavaScript front-end и Progress4GL

Я нашел эту документацию: http://communities.progress.com/pcom/docs/DOC-106147 (см. Введение в AJAX и введение JSON). В описанном примере используется метод GET при запросе данных:

xmlhttp.open("GET", "http://localhost/cgi-bin/cgiip.exe/WService=wsbroker1/getcustomersJSON_param.p?piCustNum="+ custval, true);    
xmlhttp.send(); 

и по процедуре Progress4GL для получения параметров он используется get-value("piCustNum").

В моем приложении я хочу использовать метод POST. Таким образом, запрос будет, например:

xmlhttp.open("POST","http://localhost/cgi-bin/cgiip.exe/WService=wsbroker1/getcustomersJSON_param.p",true); 
xmlhttp.send("piCustNum=" + custval); 

Но я не знаю, как получить отправленный параметр на стороне Прогресса. На самом деле я хочу отправить строку JSON.

Может ли кто-нибудь помочь мне с этим? Благодаря!

ответ

2

Если вы хотите получать данные POST JSON в программу webspeed, проверьте WEB-CONTEXT:FORM-INPUT или, если вы разместите более 32K, ознакомьтесь с WEB-CONTEXT: FORM-LONG-INPUT.

Теперь ... относительно чтения данных JSON, это зависит от вашей версии OpenEdge. В 10.2B Прогресс начал поддерживать JSON, однако он очень ограничен, особенно если у вас мало контроля над созданием JSON. Поскольку вы создаете данные JSON, это может сработать для вас. Версия 11.1 намного лучше поддерживает JSON, включая реализацию потоковой передачи SAX.

Мы были на версии 10.2, поэтому мне пришлось прибегнуть к использованию this C library для преобразования JSON в файл CSV. Если у вас есть доступ к Python на сервере это very easy преобразовать в CSV файл

+0

I есть Progress11.2. Для чтения JSON я использую метод read-json: temp-table ttTodo: read-json («LONGCHAR», lcJSON). – Tenzi

0

Для переднего конца я рекомендую вам использовать некоторые библиотеки (например, jQuery) для обработки запроса Аякса для вас, а не с учетом сложности работы с разными браузерами и т. д. Для выполнения ваших запросов вы можете использовать функции jQuery, такие как $ .ajax, $ .get или $ .post.

Столб на страницу WebSpeed ​​легко можно сделать так:

var data = { 
    tt_param: [ { id: 1, des: 'Description 1' } ] 
} 

var params = { data: JSON.stringify(data) } 

$.post(
    'http://<domain>/scripts/cgiip.exe/WService=<service>/ajax.p', 
    params, 
    function (data) { 
    alert('returned:' + data); 
    }, 
    'text' 
); 

И фоновым бы получить строку JSON с помощью GET-значения ('данные'):

{src/web2/wrap-cgi.i} 

def temp-table tt_param no-undo 
    field id as int 
    field des as char. 

def var lc_param as longchar no-undo. 

procedure output-header: 
    output-content-type("text/text"). 
end. 

run output-header. 

assign lc_param = get-value('data'). 

temp-table tt_param:read-json('longchar', lc_param). 

find first tt_param no-error. 

{&OUT} 'Cod: ' tt_param.id ', Des: ' tt_param.des. 

Это хорошее место для начала, надеюсь, что это поможет.

Приветствия,

0

Существует библиотека с узла для вызова Прогресс бизнес-логики динамически. Надеюсь, это поможет. node4progress

 Смежные вопросы

  • Нет связанных вопросов^_^