iframe - 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
};
});
解决方案
您可以使用window.postMessage
从外部表单传递数据并在套件上添加客户端脚本以使用window.addEventListener
.
要在表单上附加客户端脚本,您可以使用以下命令
newForm.clientScriptModulePath = './FILE_PATH_TO_CLIENT_SCRIPT';
从客户端脚本返回newForm
的对象在哪里,您可以使用pageInit来初始化eventListener。form
serverWidget.createForm
推荐阅读
- node.js - 如何在 vue-cli 应用程序中为 WebSocket 代理正确设置 devServer
- firebase - WidgetsFlutterBinding.ensureInitialized() 有什么作用?
- algorithm - 鉴于它是完全的,如何找到递归方程的基本情况?
- generics - 通用 SwiftUI 视图的字符串推理协议
- c++ - 如何在 C++ 中删除输出末尾的空格?
- python - 如何对 seaborn relplot 的轴使用对数刻度?
- r - 如何在重复元素具有相同顺序的向量中查找元素的顺序?
- r - 编码一个函数
- c - 我是初学者,此代码需要提供属性详细信息。它会自动选择属性类型为房屋。我该怎么办?
- python - 将一列转换为 Pandas 中的列标题对于同一变量的每个类的多个观察