

monacaでアプリを作っています。

これまでCordova4.2環境で、jQueryの$.ajaxを利用して外部ドメイン化に配置したjsonデータを通信・取得する処理をしておりましたが、monacaでCordova5.0が利用できるようになりアップデートをしたところ、通信・取得ができなくなってしまいました。

おそらく、Cordova5.0から追加されたwhitelistプラグインによる影響で、外部ドメインへのajax通信が遮断されてしまっているのかなと予想はしているのですが、いかんせん、それをどのように対処すれば通信・取得が可能になるかが検討がつきません。(metaタグとして、Content-
Security-Policyの適切な値を指定する必要がある？)

現在の記述は以下のとおりです。

[code]

    var jsonObject;
    var url = 外部ドメインのjsonデータまでのURL;
        $.ajax({
            type: "GET",
            url: url+"data.json",
            data: {"data" : "data"},
            dataType: "json",
            async: false,
            success: function(data){
                jsonObject = data;
            }
        });
    
[/code]

どなたかお分かりの方おりましたら、よろしくお願いします。

* * *

11/26 15:44 私が新規ユーザーなのでコメント追加が出来ないため、お返事に追記を利用します。  
ご丁寧に有難うございます。が、やはり上手くいきませんでした。  
参考までに、errorThrownの内容を以下の通り掲載します。

[code]

    NetworkError: Failed to execute 'send' on 'XMLHttpRequest': Failed to load 'jsonデータのURL'.
    
[/code]


CC BY-SA 3.0
2015-11-24T13:44:51.083
19255
2016-11-02T08:33:05.350
2015-12-28T17:25:12.567
76
13357
question
monaca cordova
Cordova5.0においてjQuery経由のajax通信する方法


HTMLのMETAタグを下記のようにして試してみてください。

[code]

     <meta http-equiv="Content-Security-Policy" content="default-src *; style-src * 'unsafe-inline'; script-src * 'unsafe-inline' 'unsafe-eval'">
    
[/code]

Cordova5になった際のWhitelistPluginの関係です。  
[こちらのブログ](http://blog.asial.co.jp/)から参照です。

* * *

**追記**  
私の環境では下記のコードでAjax通信が出来ることを確認しました。

[code]

    <!DOCTYPE HTML>
    <html>
        <head>
            <meta charset="utf-8">
            <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
            <meta http-equiv="Content-Security-Policy" content="default-src *; style-src * 'unsafe-inline'; script-src * 'unsafe-inline' 'unsafe-eval'">
            <script src="components/loader.js"></script>
            <link rel="stylesheet" href="components/loader.css">
            <link rel="stylesheet" href="css/style.css">
            <script>
                document.addEventListener('deviceready',function(){
                    //Ajax通信
                    $.ajax({
                        type: 'post',
                        url: 'http://domain/ajax',
                        success: function (data, dataType) {
                            $("body").html("success");
                            $("body").html(data);
                        },
                        error: function (XMLHttpRequest, textStatus, errorThrown) {
                            $("body").html("error");
                            $("body").html(XMLHttpRequest);
                        }
                    });
                },false);
            </script>
        </head>
        <body>
        </body>
    </html>
    
[/code]

アップデートされたプロジェクトだということですので

  * Cordovaプラグイン  
`MonacaPlugin`：ｖ2.0.0

  * JS/CSSコンポーネント  
`Monaca Core Utility`：Ver=2.0.4

以上のバージョンを確認してみてください。


CC BY-SA 3.0
2015-11-25T06:38:00.427
19274
2015-11-26T01:39:51.313
2015-11-26T01:39:51.313
19255
answer