我是新的办公室365字JavaScript API。我正在尝试使用对话框api将Json对象发送到父对话框。但我无法找到更好的解决方案。我发现可以使用下面的代码片段将对话框中的Json对象发送到父对象。
Office.context.ui.messageParent
有人可以通过代码片段给我一个很好的解决方案来解决这个问题吗?
答案 0 :(得分:2)
你可以尝试类似的东西
在父网页(实际加载项)中的javascript代码
Office.context.ui.displayDialogAsync(url, options, function(result) {
var dialog = result.value;
dialog.addEventHandler(Office.EventType.DialogMessageReceived, function(args){
dialog.close();
var json = JSON.parse(args.message);
//do what ever you need to do...
});
});
注意:为了简单起见,如果回调函数收到错误结果,我省略了“错误检查”。你也应该照顾好。
在url
打开的网页将具有在将json对象表示为字符串后推回json对象的功能
var asString = JSON.stringify(myObj);
Office.context.ui.messageParent(asString);
当然,在对话框窗口中打开的网页也必须引用Office.js。 以下是此所谓dialogAPI https://dev.office.com/reference/add-ins/shared/officeui
的文档链接修改强>
最初的问题是将数据从父级发送给孩子
如果您需要将信息发送到在dialogAPI中打开的页面。我建议您将查询参数附加到url
。您可以对Json对象进行字符串化并传递它。这不是很干净的想法。
Standardized way to serialize JSON to query string?
答案 1 :(得分:0)
您可以轻松地将JSON数据或对象发送回您的父母。
此代码段应位于您的子页面(对话框页面)JS文件中。
(function () {
"use strict";
// The Office initialize function must be run each time a new page is loaded
Office.initialize = function (reason) {
$(document).ready(function () {
$('#btnLogin').click(submit);
});
};
function submit() {
// Get and create the data object.
var email = $('#txtEmail').val();
var password = $('#txtPassword').val();
var data = {
email: email,
password: password
}
// Create the JSON and send it to the parent.
var json = JSON.stringify(data);
Office.context.ui.messageParent("json");
}
})();
答案 2 :(得分:0)
见这里:https://dev.office.com/docs/add-ins/develop/dialog-api-in-office-add-ins
查找部分"将信息传递到对话框"。
两种主要方式: