2016-11-13 3 views
0

私の目標は、カスタムリクエストを外部サーバーに送信するSuiteletに添付することです。私が抱えている問題は、ページをレンダリングするときに、のカスタムボタン内のsend()ファンクションが、ページがロードされているときに実行されているということです。このため、データはsend()ファンクションに送信されていないため、適切に処理されません。SuiteletのPOSTリクエストを分離する

私が理解するところでは、この問題はオリジナルのPOSTリクエストでスイートレットをレンダリングし、送信したいPOSTリクエストを妨害しています。 私が行う必要があるのは、フォームを送信するPOST要求を別々に、または区別することです。理想的なのは、これをユーザーイベントスクリプトで実行することですが、フォームはSS1.0のスイートレットでのみ使用できます。

これは可能ですか?これを達成するためにSuiteScript 2.0を使用すべきですか?以下 は私のコードがどのように見えるかです:あなたが実際に機能を実行している

function main(request, response){ 
     var form = nlapiCreateForm('Submission Form'); 
     form.addField('one', 'text', 'Field 1'); 
     response.writePage(form); 
     form.addButton('submit','Submit', send(form));  
} 

function send(form){ process form data somewhere... } 
+0

SuiteLetを自分自身に送信しているか、他のエンドポイントを呼び出していますか?より多くのコンテキストと、send()メソッドのソース(蒸留さえさえ)を提供した場合は役に立ちます。 Adolfoへのあなたのコメントは、あなたがSuiteLetsの基本的な詳細を見逃していると思わせる。 –

+0

私は、スイートレットのフォーム情報を別のサーバーに送信することに言及しました。しかし、私は問題をsend()関数を分離し、それをデプロイされていないクライアントスクリプトとして格納し、次に展開されたmainFunctionスクリプトでsetScript関数を使用することで解決しました。今私はサーバーからの応答を受け取ります。 – VicDid

+0

'response.getParamterValues(form)'が私を投げた。これは、SuiteLetのPOSTハンドラ(サーバー側)に送信されたフィールドにアクセスしようとしている場合に実行する処理です。クライアントスクリプトの複雑さが増すのを避けたい場合は、SuiteLetを自分自身に戻すことができます。受信したデータをログに記録してから、その要求を目的のエンドポイントに転送します。 –

答えて

3

あなたは(フォーム)を送信やっているSuiteletに。 form.addButton法第三パラメータあなたがあなた自身のPOSTを構築したい場合、私はそれが簡単になると思いますが、あなたは、全体の文字列化機能を追加することができます

form.addButton('submit','Submit', "alert('Sending form')")

ような何かをしたいので、文字列を受け取りフォームデータを同じSuiteletに送信すると、nlapiRequestURLを使用してPOSTによってそのデータを送信することができます。

+0

それで、単純な 'response.getParamterValues(form)'は、送信されたフォームの値を私に与えるべきです。あれは正しいですか? – VicDid

+0

私の誤りは、値を取得する方法は 'response.getParameter'ではなく' request.getParameter'を使うことです。あなたが示唆したように、スイートレットの中にそれをすべて残してしまった。ありがとう! – VicDid