Connexion à une base de données MySQL à l'aide de PhoneGap, AJAX et JQuery Mobile

Je suis dans une équipe de développement d'une application Android comptons grandement sur l'utilisation d'une base de données distante. Nous sommes à l'aide de PhoneGap et Jquery Mobile et avez tenté de vous connecter à notre base de données MySQL à l'aide d'AJAX et JSON appels. Actuellement, nous sommes en difficulté dans notre phase de test, qui consiste à vérifier, nous avons même une connexion à tous, en tirant une codé en dur de l'utilisateur de "Ted" de mySQL /entrée via MySQL Workbench.

De ce que nous avons recueillies, le processus de transmission de données fonctionne comme ceci:

  1. Sur notre fichier html, nous avons un

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

    ^ Qui doit exécuter le Connect.js script, correct? Donc à partir de là, Connect.js est exécuté?

  2. Connect.js fonctionne, la connexion à notre ServerFile.php qui est hébergé sur un service web externe, lui permettant d'utiliser PHP pour se connecter à la base de données MySQL et extraire des informations.

    //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');
        });
    });

Est ici ServerFile.php. Cela doit se connecter à la Base de données MySQL, faire de l'instruction Select, puis envoyer la sortie vers le navigateur encodés dans le format 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));
}
?>

Pourtant, rien n'est à montrer ici. Que faisons-nous partir d'ici?

  • Avez-vous fait tout de débogage pour identifier où dans le code est le problème? Je conseillerais de le mettre echo json_encode(array('status' => 'success')); exit; à l'ouverture de ServerFile.php pour voir si le problème est que c'est étouffée quelque part avec le SQL, ou si c'est un problème avec la lecture de ce retour.
  • Ou, autre façon de déboguer serait de mettre console.log(response); juste à l'intérieur de votre $.getJSON fonction. La réponse apparaîtra alors dans votre Firebug.
InformationsquelleAutor Spookytheboy | 2013-03-29