Как отправить объект Json в диалоговое окно из родительского с помощью диалогового API в Office365
Я новичок в Office 365 слов JavaScript API. Я пытаюсь отправить объект Json в диалоговое окно от родителя, используя диалоговое окно API. Но я не мог найти лучшего решения для этого. Я обнаружил, что можно отправить объект Json из диалогового окна родителю, используя приведенный ниже фрагмент кода.
Office.context.ui.messageParent
Может кто-нибудь дать мне хорошее решение с помощью фрагмента кода для решения этой проблемы?
3 ответа
Вы можете попробовать что-то подобное
На родительской веб-странице (фактическая надстройка) код 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 после представления его в виде строки
var asString = JSON.stringify(myObj);
Office.context.ui.messageParent(asString);
Конечно, веб-страница, открытая в диалоговом окне, должна также ссылаться на Office.js. Вот ссылка на документацию для этого так называемого dialogAPI https://dev.office.com/reference/add-ins/shared/officeui
Редактировать:
Оригинальный вопрос заключается в отправке данных от родителей к детям
Если вам нужно отправить информацию на страницу, открытую в диалоге API. Я предлагаю ваши параметры запроса добавления к url
, Вы можете привести в порядок свой объект Json и передать его. Это не очень чистая мысль. Стандартизированный способ сериализации JSON для запроса строки?
Вы можете легко отправлять данные или объект 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");
}
})();
Смотрите здесь: https://dev.office.com/docs/add-ins/develop/dialog-api-in-office-add-ins
Найдите раздел "Передача информации в диалоговое окно".
Два основных способа:
- Добавить параметры запроса в URL
- Храните информацию в месте, доступном как для главного окна, так и для диалогового окна, например, локальное хранилище