2013-03-29 10 views
6

Jestem członkiem zespołu opracowującego aplikację na Androida, która będzie w dużym stopniu polegać na korzystaniu ze zdalnej bazy danych. Korzystamy z PhoneGap i Jquery Mobile i próbowaliśmy połączyć się z bazą danych MySQL za pomocą wywołań AJAX i JSON. Obecnie mamy kłopot w fazie testowania, która polega na sprawdzeniu, czy w ogóle mamy połączenie przez ciągłe zakodowanie użytkownika "Teda" z mySQL/input za pośrednictwem MySQL Workbench.Podłączanie do bazy danych MySQL przy użyciu aplikacji PhoneGap, AJAX i JQuery Mobile

Z tego, co zebraliśmy, proces transmisji danych działa w ten sposób:

  1. Na naszym pliku html, mamy

    <script type="text/javascript" src="Connect.js"></script> 
    

    ^Który powinien uruchomić skrypt Connect.js , poprawne? Stamtąd uruchamiany jest Connect.js?

  2. Działa connect.js, łącząc go z naszym plikiem ServerFile.php, który jest hostowany w zewnętrznej usłudze internetowej, umożliwiając uruchomienie PHP w celu połączenia z bazą danych MySQL i pobrania informacji.

    //run the following code whenever a new pseudo-page is created 
    $('#PAGENAME').live('pageshow', function(event)) { 
    
        // cache this page for later use (inside the AJAX function) 
        var $this = $(this); 
    
        // make an AJAX call to your PHP script 
        $.getJSON('http://www.WEBSITENAME.com/ServerFile.php', function (response) { 
    
         // create a variable to hold the parsed output from the server 
         var output = []; 
    
         // if the PHP script returned a success 
         if (response.status == 'success') { 
    
          // iterate through the response rows 
          for (var key in response.items) { 
    
    
           // add each response row to the output variable 
           output.push('<li>' + response.items[key] + '</li>'); 
          } 
    
         // if the PHP script returned an error 
         } else { 
    
          // output an error message 
          output.push('<li>No Data Found</li>'); 
         } 
    
         // append the output to the `data-role="content"` div on this page as a 
         // listview and trigger the `create` event on its parent to style the 
         // listview 
         $this.children('[data-role="content"]').append('<ul data-role="listview">' + output.join('') + '</ul>').trigger('create'); 
        }); 
    }); 
    

Oto ServerFile.php. Powinno to połączyć się z bazą danych MySQL, utworzyć instrukcję Select, a następnie wysłać dane wyjściowe do przeglądarki zakodowanej w formacie JSON.

<?php 

//session_start(); 
$connection = mysql_connect("csmadison.dhcp.bsu.edu", "clbavender", "changeme"); 
$db = mysql_select_db("cs397_clbavender", $connection); 

//include your database connection code 
// include_once('database-connection.php'); 

//query your MySQL server for whatever information you want 
$query = mysql_query("SELECT * FROM Users WHERE Username ='Ted'", $db) or trigger_error(mysql_error()); 

//create an output array 
$output = array(); 

//if the MySQL query returned any results 
if (mysql_affected_rows() > 0) { 


    //iterate through the results of your query 
    while ($row = mysql_fetch_assoc($query)) { 

     //add the results of your query to the output variable 
     $output[] = $row; 
    } 


    //send your output to the browser encoded in the JSON format 
    echo json_encode(array('status' => 'success', 'items' => $output)); 

} else { 

    //if no records were found in the database then output an error message encoded in the JSON format 
    echo json_encode(array('status' => 'error', 'items' => $output)); 
} 
?> 

Jednak tutaj niczego nie widać. Co robimy stąd?

+0

Czy wykonałeś jakieś debugowanie, aby określić, w którym miejscu kodu występuje problem? Polecam wstawienie 'echo json_encode (array ('status' => 'success')); exit; 'przy otwarciu pliku ServerFile.php, aby zobaczyć, czy problem polega na tym, że gdzieś z SQL jest on zakorkowany lub jeśli jest to problem z odczytaniem tego, co powraca. –

+1

Innym sposobem debugowania byłoby umieszczenie 'console.log (response);' wewnątrz funkcji $ .getJSON. Odpowiedź pojawi się w Firebug. –

Odpowiedz

2

Pierwsza rzecz pierwsza. Spróbuj określić, skąd się bierze problem po stronie serwera lub po stronie klienta.

Wydrukuj zapytanie o bazę danych i zakodowane json może być przydatne. Jeśli tworzysz prostą usługę API, powinieneś być w stanie wpisać http://www.WEBSITENAME.com/ServerFile.php używając przeglądarki i sprawdzić, jak dane wyjściowe są.

Używaj echa do drukowania rzeczy za pomocą php.

Jeśli wszystko wygląda dobrze, należy wydrukować odpowiedź z serwera w javascript i zobaczyć, co jest wyłączone.

Użyj pliku console.log, aby wydrukować rzecz z javascript. Dzienniki powinny pojawić się w sekcji logcat środowiska Eclipse (ponieważ tworzysz aplikację dla systemu Android).

Powiązane problemy