0

私が行ったリクエストは index.html ファイルでは機能しますが、他のファイルでは機能しないため、非常にイライラします。onDeviceReady 関数に関係していると思いますが、これを変更または修正する方法がわかりませんか?

別のページ (index.html ではない) のコードは次のとおりです。

<!DOCTYPE HTML>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0;" />
    <script src="cordova-1.8.1.js"></script>
    <script src="js/jquery-1.7.2.min.js"></script>
    <script src="js/load-whites.js"></script>
    <link rel="stylesheet" href="http://code.jquery.com/mobile/1.1.1/jquery.mobile-1.1.1.min.css" />
    <script src="http://code.jquery.com/jquery-1.7.1.min.js"></script>
    <script src="http://code.jquery.com/mobile/1.1.1/jquery.mobile-1.1.1.min.js"></script>
</head>

<body>


    <div data-role="page" id="whites">

        <div data-role="header" data-position="fixed">
            <h1>White Wines</h1>
        </div>

        <div data-role="content">

            <div data-role="collapsible-set" data-theme="c" data-content-theme="d">
                <div id="whites"></div>
            </div>

        </div>
    </div>

</body>

私のphonegapプロジェクト(Cordova 1.8.1)の他の.htmlファイルではなく、index.htmlファイルでは機能するリクエストを次に示します。機能するように変更するにはどうすればよいですか?以下のファイルは load-whites.js です。

$(document).ready(function(){
              $(document).bind('deviceready', function(){
                               onDeviceReady();
                               });

              function yourCallback(button) {
              if (button == 2) {
              dataRequest();
              }
              }

              function dataRequest() {
              var output = $('#whites').text('Loading white wines and their deta1ils, please wait...');

              $.ajax({
                     url: 'http://localhost/whites.php',
                    dataType: 'jsonp',
                     jsonp: 'jsoncallback',
                     timeout: 5000,
                     success: function(data, status){
                     output.empty();

                $.each(data, function(i,item){

                       var whites =  '<div data-role="collapsible"><h3>'+item.Name+'</h3>'
                                    +'<b>Price:</b> £'+item.Price+'<br />'
                                    +'<b>Vintage:</b> '+item.Vintage+'<br />'
                                    +'<b>Country:</b> '+item.Country+'<br />'
                                    +'<b>Grape:</b> '+item.Grape+'<br />'
                                    +'<b>Alcohol:</b> '+item.Alcohol+'%<br /><br />'
                                    +item.Description+'</p></div>';



                       output.append(whites);

                  $('#whites').trigger('create');


                       });
                     },
                     error: function(){
                     output.text('The Wines could not be loaded at this time.');
                     navigator.notification.confirm(
                                'Please check your internet connection. Would you like to retry?',
                                yourCallback,
                                'Something went wrong',
                                'No,Yes'
                                    );
                     }
                     });
              }


              dataRequest();
              });

どんな助けでも大歓迎です。再度、感謝します。

4

1 に答える 1

0

JQuery モバイルを使用しているようです。今日私が抱えていた問題に似ている可能性があり、JQuery モバイルが原因でした。http://jquerymobile.com/demos/1.1.1/docs/pages/page-scripting.html

インデックス以外の別のページのヘッダーで Javascript ファイルを宣言している場合、それは無視されます。これが問題である場合は、インデックスで JS ファイル load-whites.js を宣言してから..

$( document ).delegate("#PAGENAME", "pageinit", function() {
    //do work here
});

これがあなたの問題かどうかはわかりませんが、そうかもしれません!

于 2012-08-23T16:11:14.460 に答える