Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [phonegap]jak pobierać zdalną treść
Forum PHP.pl > Forum > Przedszkole
szczemp
Przyszła mi ochota nauczyć się czegoś nowego, ale nie za bardzo skomplikowanego.
Chcę zrobić prostą aplikację na telefon, która będzie pobierać jakąś treść z mojego serwera. Na początek nic wielkiego.
Aplikacja ma być zrobiona w html5 i jquerymobile. Po stronie serwera obsługą zajmie się php.
No i aplikacja mniej więcej wygląda tak.
  1.  
  2. <!-- Start of first page: #one -->
  3. <div data-role="page" id="one">
  4.  
  5. <div data-role="header">
  6. <h1>Multi-page</h1>
  7. </div><!-- /header -->
  8.  
  9. <div role="main" class="ui-content">
  10. <h2>One</h2>
  11. <p>I have an <code>id</code> of "one" on my page container. I'm first in the source order so I'm shown when the page loads.</p>
  12. <h3>Show internal pages:</h3>
  13. <p><a href="#two" class="ui-btn ui-shadow ui-corner-all">Show page "two"</a></p>
  14. </div><!-- /content -->
  15.  
  16. <div data-role="footer" data-theme="a">
  17. <h4>Page Footer</h4>
  18. </div><!-- /footer -->
  19. </div><!-- /page one -->
  20.  
  21. <!-- Start of second page: #two -->
  22. <div data-role="page" id="two" data-theme="a">
  23.  
  24. <div data-role="header">
  25. <h1>Two</h1>
  26. </div><!-- /header -->
  27.  
  28. <div role="main" class="ui-content">
  29. <div id = "z">tu ma się wstawić tekst pobrany z internetu</div>
  30. <h2>Two</h2>
  31. <p><a href="#one" data-direction="reverse" class="ui-btn ui-shadow ui-corner-all ui-btn-b">Back to page "one"</a></p>
  32.  
  33. </div><!-- /content -->
  34.  
  35. <div data-role="footer">
  36. <h4>Page Footer</h4>
  37. </div><!-- /footer -->
  38. </div><!-- /page two -->
  39.  
  40. var zdalnyAdres = 'http://mójserwer.pl/';
  41.  
  42.  
  43. $(document).on('pagecontainershow', function(){
  44. var aktualnaStrona = $('body').pagecontainer('getActivePage').prop('id');
  45.  
  46. if (aktualnaStrona === 'two') {
  47. $.ajax({
  48. url: zdalnyAdres+ 'test.php',
  49. //data: {sessionid: sessionid},
  50. dataType: 'jsonp',
  51. success: function(json){
  52. console.log(json);
  53. alert(json.komunikat);
  54. $('#z').html(json.komunikat);
  55. },
  56. error: function(jqXHR, textStatus, ex) {
  57. alert(textStatus + "," + ex + "," + jqXHR.responseText);
  58. }
  59. });
  60. }
  61.  
  62. });
  63. </body>

Na serwerze plik test.php jest taki:
  1. <?php
  2. $zwrotka = array('komunikat' => 'to jest pobierane z internetu'
  3. );
  4. echo $_GET['callback']. '('. json_encode($zwrotka, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES). ')';
  5. ?>


Całość działać ma tak: Aplikacja na telefonie się uruchamia i pokazuje się 'pierwsza strona', div o id="one", po kliknięciu w 'Show page two' pojawia się 'druga strona', div o id="two". To działa dobrze, bo o to dba jquerymobile. Natomiast nie działa mi moja część. Po otwarciu drugiej strony div id="two" ma być wysłane zapytanie ajaxem do zdalnego serwera o plik test.php. I treść zwrócona przez ten plik ma się wyświetlić w alercie i ma być wstawiona do div id = "z". Jak stronę odpalę w przeglądarce na komputerze (bezpośrednio plikiem idex.html albo przez http://localhost), to mi to wszystko działa pięknie. A jak spakuję do zipa i przepuszczę przez https://build.phonegap.com i zainstaluję na telefonie, to strony się zmieniają tak jak mają się zmieniać, ale coś zdalna treść się nie pobiera. Nie dostaję żadnego alerta, ani tego z success ani z error.
Gdzie jest problem?
nospor
Cytat
. A jak spakuję do zipa i przepuszczę przez https://build.phonegap.com i zainstaluję na telefonie, to strony się zmieniają tak jak mają się zmieniać, ale coś zdalna treść się nie pobiera.

Pytanie poboczne:
przeciez PhoneGap nie obsluguje php. Czego wiec oczekujesz od wczytania pliku test.php?

edit: dobra, nie bylo pytania, widze z php pobierasz ze zdlanego serwera

edit2:
daj
var aktualnaStrona = $('body').pagecontainer('getActivePage').prop('id');
alert(aktualnaStrona);

to bedziesz wiedzial czy ci w oogle tam wlazlo bo skoro nie masz ani error ani success to pewnie w oogle tam nie dochodzi
szczemp
Sprawdziłem alert(aktualnaStrona); i dobrze rozpoznaje strony. Po otwarciu apki pokazuje 'one', a na drugiej stronie pokazuje 'two'.
Do ifa if (aktualnaStrona === 'two') też dobrze wchodzi
if (aktualnaStrona === 'two') {
alert('tu ma być ajax');
}
Wywala altera.
Coś jest nie tak z samym ajaxem.
nospor
alert($);
alert($.ajax);
szczemp
alert($);
Kod
function ( selector, context ) {
        // The jQuery object is actually just the init constructor 'enhanced'
        return new jQuery.fn.init( selector, context, rootjQuery );
    }

alert($.ajax);
Kod
function( url, options ) {

        // If url is an object, simulate pre-1.5 signature
        if ( typeof url === "object" ) {
            options = url;
            url = undefined;
        }

        // Force options to be an object
        options = options || {};

        var // Cross-domain detection vars
            parts,
            // Loop variable
            i,
            // URL without anti-cache param
            cacheURL,
            // Response headers as string
            responseHeadersString,
            // timeout handle
            timeoutTimer,

            // To know if global events are to be dispatched
            fireGlobals,

            transport,
            // Response headers
            responseHeaders,
            // Create the final options object
            s = jQuery.ajaxSetup( {}, options ),
            // Callbacks context
            callbackContext = s.context || s,
            // Context for global events is callbackContext if it is a DOM node or jQuery collection
            globalEventContext = s.context && ( callbackContext.nodeType || callbackContext.jquery ) ?
                jQuery( callbackContext ) :
                jQuery.event,
            // Deferreds
            deferred = jQuery.Deferred(),
            completeDeferred = jQuery.Callbacks("once memory"),
            // Status-dependent callbacks
            statusCode = s.statusCode || {},
            // Headers (they are sent all at once)
            requestHeaders = {},
            requestHeadersNames = {},

i jeszcze kilkadziesiąt linijek.
Kod
alert($.ajax({
            url: zdalnyAdres+ 'test.php',
            //data: {sessionid: sessionid},
            dataType: 'jsonp',
            success: function(json){
                //console.log(json);
                //alert(json.komunikat);
                //$('#z').html(json.komunikat);
            },
            error: function(jqXHR, textStatus, ex) {
                alert(textStatus + "," + ex + "," + jqXHR.responseText);
            }
        }));

wyświetla [object Object]
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.