0

フロントエンド HTML + JavaScript とバックエンド 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 を送信したいと考えています。

誰でもこれで私を助けることができますか?ありがとう!

4

3 に答える 3

2

JSON データを webspeed プログラムに POST したい場合は、WEB-CONTEXT:FORM-INPUTを調べてください。32K以上を投稿する場合は、WEB-CONTEXT:FORM-LONG-INPUT を調べてください。

さて... JSONデータの読み取りに関しては、OpenEdgeのバージョンに依存します。10.2B でProgressはJSON のサポートを開始しましたが、JSON の作成方法をほとんど制御できない場合は特に、非常に制限されています。JSON データを作成するのはあなたなので、うまくいくかもしれません。バージョン 11.1 では、SAX ストリーミングの実装を含む JSON のサポートが大幅に向上しています。

バージョン 10.2 を使用していたため、この C ライブラリを使用して JSON を CSV ファイルに変換する必要がありました。サーバーで Python にアクセスできる場合、CSV ファイルへの変換は非常に簡単です。

于 2013-10-04T21:12:46.843 に答える
0

フロントエンドについては、さまざまなブラウザーでの作業などの複雑さに対処するのではなく、何らかのライブラリ ( jQueryなど) を使用して ajax の要求を処理することをお勧めします。 $.ajax などの jQuery の関数を使用できます。 $.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'
);

バックエンドは get-value('data') を使用して JSON 文字列を受け取ります。

{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.

始めるには良い場所です。お役に立てば幸いです。

乾杯、

于 2013-10-16T18:56:08.867 に答える
0

Progress Business Logic を動的に呼び出すための Node のライブラリがあります。これが役立つことを願っています。 node4progress

于 2015-08-12T08:02:41.160 に答える