2016-11-01 15 views
3

私はオフィス365ワードのJavaScript APIを初めて使用しています。ダイアログAPIを使用して親からダイアログにJsonオブジェクトを送信しようとしています。しかし、私はそれのためのより良い解決策を見つけることができませんでした。私は以下のコードスニペットを使用してダイアログから親にJsonオブジェクトを送ることが可能であることを発見しました。Office365でダイアログAPIを使用して親からダイアログにJsonオブジェクトを送信する方法

Office.context.ui.messageParent 

誰かがこの問題を解決するためのコードスニペットで良い解決策を教えてくれますか?

答えて

2

あなたはその

親でWebページのようなものを試すことができます(実際のアドイン)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で開かれたWebページでは、文字列もちろん

var asString = JSON.stringify(myObj); 
Office.context.ui.messageParent(asString); 

としてそれを表現した後、ダイアログウィンドウで開くWebページもOffice.jsを参照する必要がありますJSONオブジェクトを押し戻すための機能を持っています。 ここでは、このいわゆるのドキュメントリンクがあるdialogAPI https://dev.office.com/reference/add-ins/shared/officeui

編集:

元の質問は、あなたが情報を送信する必要がある場合は子供

に親からのデータを送信することですダイアログAPIで開いたページ。クエリのパラメータをurlに追加することをお勧めします。あなたはJsonオブジェクトを文字列化して渡すことができます。これはあまりクリーンな考えではありません。 Standardized way to serialize JSON to query string?

+0

ありがとうございました。しかし、これは私が尋ねたことではありません。あなたの例題showはJsonデータをダイアログから親に送ります。しかし、私はJsonオブジェクトを親からダイアログに送る必要があります。 – NishMJ

+0

@NishMJ申し訳ありませんが、私は自分の答えを更新しました。元の答えは他の人にとって役に立ちそうなので、私は元の答えを保持しています。 –

+0

ありがとうございます。しかし、ダイアログでURLパラメータを取得する方法がわかりません。親から送信されたダイアログ内でjsonオブジェクトを取得する方法の例を教えてください。 – NishMJ

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"); 
    }  
})(); 
0

こちらをご覧ください:https://dev.office.com/docs/add-ins/develop/dialog-api-in-office-add-ins

検索部 "ダイアログボックスに情報を渡します"。

2つの主要な方法:

  • URLにクエリパラメータを追加ストアホストのウィンドウやダイアログボックスの両方にアクセス可能であり、どこかの情報、例えばローカルストレージ
関連する問題