0

コードに問題があります。Chromeでは機能しますが、Androidでは機能しません。alert( "test")でさえ呼び出されることはありません。PhoneGapを使用してapkを作成しました。jQueryMobileも使用しています。私は何が欠けていますか?json応答からのデータから動的リストビューを作成する他の方法はありますか?

答えてくれてありがとう。

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

$( document ).ready(function (){

$.support.cors = true;
$.mobile.allowCrossDomainPages = true;
e.preventDefault();
    alert("test");//-----------------------------------------------

        $.ajax({                                                                   
        crossDomain: true,
        type: 'GET',
        url: 'http://ip/services/rest/contact/list', 
        callback: 'jsonpCallback',
        jsonpCallback: 'jsonpCallback',
        jsonp: '_jsonp',
        contentType:  'application/json',
        dataType: 'jsonp json',
        timeout : 10000,

        success: function(data){
            var html ='';
            alert("data.firstName");
            $.each(data, function(key, data) {
            html += '<li><a class=contact href="#" ><h1>' + data.label + '</h1><p>'+ data.customerName + '</p><p>' + data.phone + ', ' + data.email + '</p><p>' + data.id + '</p></a></li>';
            $('#ul_id').append($(html));
            html='';
            });
            $('#ul_id').trigger('create');    
            $('#ul_id').listview('refresh');
        },
        error: function (xhr, ajaxOptions, thrownError){
            alert("Status: " + xhr.status + ", Ajax option: " + ajaxOptions + ", Thrown error: " + thrownError);
            //location.reload();
        },
    }); 
;

});

4

1 に答える 1

2

jquerymobileのドキュメントによると$(document).bind('pageinit')、ではなく、を使用する必要があり$(document).ready()ます。さらに、phonegapを使用する場合は、`deviceready'にバインドする必要があります。

コードを次のように変更してみてください。

document.addEventListener("deviceready", onDeviceReady, true);

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

var onDeviceReady = function(){

$.support.cors = true;
$.mobile.allowCrossDomainPages = true;
e.preventDefault();
    alert("test");//-----------------------------------------------

    $.ajax({                                                                   
    crossDomain: true,
    type: 'GET',
    url: 'http://ip/services/rest/contact/list', 
    callback: 'jsonpCallback',
    jsonpCallback: 'jsonpCallback',
    jsonp: '_jsonp',
    contentType:  'application/json',
    dataType: 'jsonp json',
    timeout : 10000,

    success: function(data){
        var html ='';
        alert("data.firstName");
        $.each(data, function(key, data) {
        html += '<li><a class=contact href="#" ><h1>' + data.label + '</h1><p>'+ data.customerName + '</p><p>' + data.phone + ', ' + data.email + '</p><p>' + data.id + '</p></a></li>';
        $('#ul_id').append($(html));
        html='';
        });
        $('#ul_id').trigger('create');    
        $('#ul_id').listview('refresh');
    },
    error: function (xhr, ajaxOptions, thrownError){
        alert("Status: " + xhr.status + ", Ajax option: " + ajaxOptions + ", Thrown error: " + thrownError);
        //location.reload();
    },
}; 
于 2012-08-29T11:26:24.690 に答える