2016-11-13 2 views
0

Моя цель - присоединить пользовательскую кнопку Submit к Suitelet, которая отправляет запрос на отправку на внешний сервер. Проблема заключается в том, что при рендеринге страницы функция send() в моей пользовательской кнопке в form.addButton('submit','Submit', send(form)); работает, когда страница загружается. Из-за этого никакие данные не отправляются в функцию send() и поэтому не обрабатываются должным образом.Разделение запросов POST для Suitelet

Из чего я понимаю, эта проблема связана с первоначальным запросом POST, передающим Suitelet, а затем вмешивается в запрос POST, который я хочу отправить. Что мне нужно сделать, это разделить или дифференцировать запрос POST, который отображает форму из той, которая отправляет форму. Идеальным было бы это сделать в скрипте пользовательского события, но формы могут использоваться только в Suitelets в 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(). Ваш комментарий к Адольфо заставляет меня подозревать, что вам не хватает фундаментальной детали SuiteLets. –

+0

Я упомянул, что отправляю информацию о форме Suitelet на другой сервер, как и не сам себе. Однако я решил свою проблему, разделив функцию send() и сохранил ее как незанятый клиентский скрипт, а затем используя функцию setScript в развернутом скрипте mainFunction. Теперь я получаю ответ от сервера. – VicDid

+0

'response.getParamterValues ​​(form)' бросил меня; это то, что вы сделали бы, если бы пытались получить доступ к представленным полям в обработчике POST для SuiteLet (например, на стороне сервера). Если вы хотите избежать дополнительной сложности клиентского скрипта, вы можете отправить SuiteLet обратно в себя, зарегистрировать полученные данные (если вам интересно), а затем перенаправить запрос на нужную конечную точку. –

ответ

3

Когда вы делаете отправки (форма) на Suitelet вы на самом деле работаете функцию. Параметр методы form.addButton третий принимает строку, так что вы хотите сделать что-то вроде

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

Вы можете добавить целую строковую функцию, если вы хотите создать свой собственный POST, хотя я думаю, что было бы легче просто введите form.addSubmitButton (метку) и отправит данные формы в тот же Suitelet, и оттуда вы можете просто отправить эти данные POST, используя nlapiRequestURL

+0

Итак, простая «response.getParamterValues ​​(form)» должна предоставить мне представленные значения формы. Это верно? – VicDid

+0

Моя ошибка, способ получить значение с помощью 'request.getParameter' не' response.getParameter'. В итоге я просто держал все в одном Suitelet, как вы предложили. Благодаря! – VicDid

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