首页 > 解决方案 > How to utilize external form and retrieve POST data from external form using SuiteScript?

问题描述

If there is an external form that posts some secure user data, and then one wanted to get that POST data from the form to flow into NetSuite, is there a way to accomplish this in SuiteScript? A simple example of how the form will be displayed, utilizing an iframe:

define(['N/ui/serverWidget'],
    function(serverWidget) {
        function onRequest(context) {
        var func = 'test';
        var request = context.request;
        var url = 'https://www.sample.com/sample-form.html'; // Not a real form
        var title = 'TEST';

        if(request.method == 'GET') {
            try {
                var content = '<iframe width=960px height=100% style="height:640px;" src=' + url + '></iframe>'

                var newForm = serverWidget.createForm({
                    title: title
                });

                var newField = newForm.addField({
                    id: 'custpage_form',
                    type: serverWidget.FieldType.INLINEHTML,
                    label: 'TEST'
                });

                newField.defaultValue = content;
                context.response.writePage(newForm);
            }
            catch(e){
                log.error(func, JSON.stringify(e));
            }
        }
        else {
        }
    }

    return {
      onRequest: onRequest
    };
});

标签: iframesuitescript2.0

解决方案


您可以使用window.postMessage从外部表单传递数据并在套件上添加客户端脚本以使用window.addEventListener.

要在表单上附加客户端脚本,您可以使用以下命令

newForm.clientScriptModulePath = './FILE_PATH_TO_CLIENT_SCRIPT';

从客户端脚本返回newForm的对象在哪里,您可以使用pageInit来初始化eventListenerformserverWidget.createForm


推荐阅读