1

jQuery Mobile と PhonGap アプリを作成しています。JSONP を使用して AJAX 呼び出しによってサーバー側の Web サービスに接続します (クロスドメインの問題については知っていますが、私の Android 開発者は問題を抱えていません)。PhoneGap Build を使用して、多くのオペレーティング システム用のアプリケーションを準備しています。

ここに私の問題があります: サーバーへの AJAX 呼び出しを行う index.html を作成しました。応答があり、main.html にリダイレクトされます。Chrome、Safari、および私の Android デバイスで正常に動作します。

2 番目のサイト: main.html で、Android デバイスで呼び出されない同様の要求 (同じ要求でも試しました) があります。ただし、Chrome と Safari の両方で問題なく動作します。

キャッシュをオフにしてみました。適切な権限が付与され、config.xml に追加されます。また、Eclipse でアプリをコンパイルしようとしましたが、/res/xml/cordova.xml に追加した結果はありませんでした。

サーバー ログを確認しましたが、2 番目のサイトからの要求はありません。コードは次のとおりです。

注: PhoneGap によると、jQuery モバイル ドキュメントも読んでいます。$(document).ready を変更しても問題は解決しません。この構築は、index.html サイトで機能します。

$( document ).bind( "mobileinit", function(){
        $.support.cors = true;
        $.mobile.allowCrossDomainPages = true;
        $.mobile.loadingMessageTextVisible = true; 
        $.mobile.showPageLoadingMsg();
        console.log('Start Strony');
})


$( document ).ready(function (){ //
        $.ajaxSetup ({
        cache: false
    });
        console.log('Start');
        $.support.cors = true;
        $.mobile.allowCrossDomainPages = true;
        $.ajax({                                                                   
        crossDomain: true,
        type: 'GET',
        url: 'http://ip/services/rest/contact/list', 
        callback: 'jsonpCallback',
        jsonpCallback: 'jsonpCallback',
        jsonp: '_jsonp',
        scriptCharset: "utf-8",
        contentType:  'application/json',
        dataType: 'jsonp',
        timeout : 5000,

        success: function(data){

            var html ='';
            console.log('Success');
            $.each(data.response, function(key, value) {
            html += '<li><a class=contact href="#" id="' + data.response[key].id + '" ><h1>' + data.response[key].label + '</h1><p>'+ data.response[key].customerName + '</p><p>' + data.response[key].phone + ', ' + data.response[key].email + '</p></a></li>';
            $('#ul_id').append($(html));
            html='';
            console.log('conatct');
            });
            $('#ul_id').trigger('create');    
            $('#ul_id').listview('refresh');
            //localStorage.setItem('idCustomerValue', data.re);

        },
        error: function (xhr, ajaxOptions, thrownError){
            alert("Status: " + xhr.status + ", Ajax option: " + ajaxOptions + ", Thrown error: " + thrownError);
            //location.reload();
            console.log('Blad');
        },
    }); 
});

残念ながら、サーバー側のコードを提供することはできません。サーバーは正しくセットアップされています。前述したように、Chrome と Safari は機能します。

4

1 に答える 1

0

問題は、JQM でのリンク中の pageinit イベントと特定の動作でした。

于 2012-09-11T13:52:42.667 に答える