5

私は、リモート データベースの使用に大きく依存する Android アプリケーションを開発しているチームに所属しています。PhoneGap と Jquery Mobile を使用しており、AJAX と JSON 呼び出しを使用して MySQL データベースに接続しようとしています。現在、テスト フェーズで問題が発生しています。これは、ハードコードされた "Ted" のユーザーを mySQL から取得し、MySQL Workbench を介して入力することで、接続が確立されていることを確認することです。

収集したデータから、データ送信のプロセスは次のように機能します。

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

ここに 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));
}
?>

しかし、ここには何も表示されていません。ここから何をしますか?

4

1 に答える 1

2

まず最初に。問題の原因がサーバー側かクライアント側かを判断してください。

データベース クエリを出力すると、エンコードされた json が役立ちます。単純な API サービスを作成している場合は、ブラウザーを使用してhttp://www.WEBSITENAME.com/ServerFile.phpと入力し、出力がどのようになるかを確認できるはずです。

echo を使用して、php で印刷します。

すべて問題ないように見える場合は、サーバーから受け取った応答を JavaScript で出力して、何が問題なのかを確認します。

console.log を使用して、javascript で出力します。ログは、Eclipse の logcat セクションに表示されるはずです (Android アプリを開発しているため)。

于 2013-03-29T07:25:22.870 に答える