0

Phonegap で最初のステップを実行していますが、サービスからコンテンツを取得できません。

function onDeviceReady() {
  $.mobile.allowCrossDomainPages = true;
  $.support.cors = true;

  $.ajax({
    type: 'GET',
    url: BaseUri + 'industries',
    contentType: 'application/json; charset=utf-8',
    dataType: 'json',
    success: function (msg) {
        alert('bla');
        var html = [];
        $.each(msg || [], function(idx, industry) {
            html.push('<li>' + industry.Title + '</li>');
        });

        $('#lstIndustries').html(html.join(''));
    },
    error: function(xhr, msg, err) {
        alert(xhr.status);
        alert(err);
    }
  });
}

$(document).ready(function() {
    document.addEventListener("deviceready", onDeviceReady, true);
});

常にエラー関数を呼び出します。contentType/dataType を text に変更すると、成功関数が呼び出されますが、応答は空です。

次の行を my に追加しましたassets/www/config.xml

<access origin="*" />

この問題を解決する方法はありますか? :)

4

2 に答える 2

0

開発時に同様の問題が発生しようとしました。config.xml でエミュレーターを操作するときは、次のものが必要でした。

<access origin="http://127.0.0.1*"/> <!-- allow local pages -->
<access origin="http://10.0.2.2" subdomains="true"/>

また、ブラウザから直接 API をテストして、問題またはエミュレータである API を確認してください。

于 2013-05-28T19:14:05.803 に答える
0

dataType を「jsonp」に設定してみましたか? ブラウザのセキュリティ上の制限により、jsonp を使用するように指定するか、callback=? を追加する必要があります。あなたのjson呼び出しに。したがって、これら2つの方法のいずれか:

jsonp:

dataType: 'jsonp'

コールバック メソッド:

url: BaseUri + 'industries&callback=?',
dataType: 'json'

また、corsが機能するには、データを取得しているサーバーでもこれを有効にする必要があると思います。

また、onDeviceReady を待たずにブラウザーでデータを取得できるかどうかを試してみることもできます。onDeviceReady は、デバイスで表示しているときにのみ起動します。

お役に立てれば。

于 2013-05-28T18:57:50.933 に答える