使用PhoneGap,AJAX和JQuery Mobile连接到MySQL数据库

时间:2013-03-29 02:28:19

标签: javascript jquery sql cordova jquery-mobile

我是一个开发Android应用程序的团队,该应用程序将极大地依赖于远程数据库的使用。我们正在使用PhoneGap和Jquery Mobile,并尝试使用AJAX和JSON调用连接到我们的MySQL数据库。目前,我们在测试阶段遇到了麻烦,即通过MySQL Workbench从mySQL / input中提取“Ted”的硬编码用户来验证我们甚至可以建立连接。

根据我们收集的信息,数据传输过程的工作原理如下:

  1. 在我们的html文件中,我们有一个

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

    ^应该运行Connect.js脚本,对吗?那么,从那里开始运行Connect.js?

  2. Connect.js运行,将其连接到托管在外部Web服务上的ServerFile.php,允许它运行PHP以连接到MySQL数据库并提取信息。

    //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');
        });
    });
    
  3. 这是ServerFile.php。这应该连接到MySQL数据库,生成Select语句,然后将输出发送到以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));
    }
    ?>
    

    然而这里没有任何表现。我们从这里做什么?

1 个答案:

答案 0 :(得分:2)

首先是第一件事。尝试确定问题的来源,服务器端或客户端。

打印出您的数据库查询,编码的json非常有用。如果您要创建简单的API服务,则应该可以使用浏览器输入http://www.WEBSITENAME.com/ServerFile.php并查看输出结果。

使用echo通过php打印东西。

如果一切正常,请在javascript中打印出从服务器收到的回复,看看有什么不对。

使用console.log用javascript打印东西。日志应该出现在eclipse的logcat部分(因为你正在开发android应用程序)