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>

这是适用于 index.html 文件的请求,但不适用于我的 phonegap 项目(Cordova 1.8.1)中的任何其他 .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 mobile 是罪魁祸首。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 回答