2016-11-13 94 views
0

我的目標是將自定義提交按鈕附加到將外部請求發送到外部服務器的Suitelet。我遇到的問題是,當頁面加載時,在我的自定義按鈕form.addButton('submit','Submit', send(form));內的功能send()正在渲染頁面時正在運行。因此,沒有數據被髮送到send()函數,因此沒有正確處理。分離Suitelet的POST請求

據我所知,這個問題與渲染Suitelet的原始POST請求有關,然後干擾我想發送的POST請求。 我需要做的是分離或區分POST請求,該請求將表單從發送表單的表單呈現出來。理想的做法是在用戶事件腳本中完成此操作,但表單只能在SS1.0中的Suitelets中使用...

這有可能嗎?我應該使用SuiteScript 2.0來實現嗎? 下面是我的代碼的外觀:在Suitelet

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

我提到我將Suitelet表單信息發送到另一個服務器,因爲它本身不是。但是,我通過分離send()函數並將其存儲爲未部署的客戶端腳本,然後在部署的mainFunction腳本中使用setScript函數解決了我的問題。現在我收到服務器的迴應。 – VicDid

+0

'response.getParamterValues(form)'扔我;那麼如果您嘗試訪問SuiteLet的POST處理程序(即服務器端)中的提交字段,則會這樣做。如果您想避免增加客戶端腳本的複雜性,您可以將SuiteLet發回自己,記錄收到的數據(如果您在意),然後將請求轉發到所需的端點。 –

回答

3

當你正在做派(表格)您在實際運行的功能。該form.addButton方法第三個參數接受一個字符串,所以你要像做

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

您可以添加一個字符串化整體功能,如果你想建立自己的職位,雖然我認爲它會更容易只需包含一個form.addSubmitButton(標籤),並將表單數據發送到同一個Suitelet,然後您可以使用nlapiRequestURL通過POST發送該數據。

+0

那麼一個簡單的'response.getParamterValues(form)'應該給我提交的表單值。那是對的嗎? – VicDid

+0

我的錯誤,獲取值的方式是使用'request.getParameter'而不是'response.getParameter'。按照您的建議,我最終只保留一個Suitelet。謝謝! – VicDid