Как отправить объект 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
  • Храните информацию в месте, доступном как для главного окна, так и для диалогового окна, например, локальное хранилище
Другие вопросы по тегам