0

私は作ろうとしています -

  • Android WEB アプリケーション
  • フォンギャップあり
  • JqueryMobile を使用したレイアウト

私がしていること -

  • ID、名前、住所を入力として受け取る html フォーム
  • 'このデータを ajax を使用してシリアライズします
  • それからjsonオブジェクトを作成します
  • 「connection.php」というファイルに送信する必要があります
  • ここで、このデータはデータベース (MySql) に入れられます

その他の詳細 -

  • 私のサーバーはlocalhostで、xamppを使用しています
  • phpmyadmin を使用してデータベースとテーブルを作成済みです

問題 -

  • json オブジェクトが作成される html ファイルが、localhost でホストされている php ファイルに接続しません。

ここに私の完全なhtmlファイルがあります:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" 
"http://www.w3.org/TR/html4/strict.dtd"> 
<html> 
<head> 

<!-- Change this if you want to allow scaling --> 
   <meta name="viewport" content="width=default-width; user-scalable=no" /> 
   <meta http-equiv="Content-type" content="text/html;charset=utf-8"> 

   <title>Trial app</title>
   <link rel="stylesheet" href="thestylesheet.css" type="text/css">
    <script type="text/javascript" charset="utf-8" src="javascript1.js"></script>
    <script type="text/javascript" charset="utf-8" src="javascript2.js"></script>
    <script type="text/javascript" charset="utf-8" src="cordova-1.8.0.js"></script>

    <script>
    $(document).ready(function () {
        $("#btn").click( function() {
        alert('hello hello');

        $.ajax({
            url: "connection.php",
            type: "POST",
            data: {
                id: $('#id').val(),
                name: $('#name').val(),
                Address: $('#Address').val()
            },
            datatype: "json",
            success: function (status)
            {
                if (status.success == false)
                {
                    alert("Failure!");
                }
                else 
                {
                    alert("Success!");
                }
            }
        });

    });
    });
</script> 
</head> 

<body> 

<div data-role="header">
        <h1>Heading of the app</h1>
    </div><!-- /header -->
<div data-role="content">
    <form id="target" method="post">
        <label for="id">
            <input type="text" id="id" placeholder="ID">
        </label>

        <label for="name">
            <input type="text" id="name" placeholder="Name">
        </label>

        <label for="Address">
            <input type="text" id="Address" placeholder="Address">
        </label>
<div id="btn" data-role="button" data-icon="star" data-theme="e">Add record</div>
        <!--<input type="submit" value="Add record" data-icon="star" data-theme="e">
        -->
    </form>

</div>
</body> 
</html>

そして、これが私のローカルホストによってホストされている「connection.php」です

  <?php header('Content-type: application/json');

$server = "localhost";

$username = "root";

$password = "";

$database = "jqueryex";

$con = mysql_connect($server, $username, $password);
if($con) { echo "Connected to database!"; }
else { echo "Could not connect!"; }
//or die ("Could not connect: " . mysql_error());

mysql_select_db($database, $con);

/*
 CREATE TABLE `sample` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `name` varchar(45) DEFAULT NULL,
  `Address` varchar(45) DEFAULT NULL,
  PRIMARY KEY (`id`)
)

*/
    $id= json_decode($_POST['id']);

$name = json_decode($_POST['name']);

$Address = json_decode($_POST['Address']);

    $sql = "INSERT INTO sample (id, name, Address) ";
    $sql .= "VALUES ($id, '$name', '$Address')";
    if (!mysql_query($sql, $con)) {
        die('Error: ' . mysql_error());
    } else {
        echo "Comment added";
    }
    mysql_close($con);
?>

私の疑問:

  • phpmyadmin で表示すると、テーブル「サンプル」にエントリが作成されません
  • 明らかに、成功メッセージも表示されません
  • ajaxからでもphpファイルからでも、エラーは発生しません。

私が疑っているもの:

  • json の代わりに jsonp を使用する必要がありますか? 私はこれが初めてです。
  • 私のphpファイルに問題はありますか?
  • おそらく、HTML ファイルにさらに JavaScript ファイルを含める必要がありますか?

これは非常に簡単な問題だと思いますので、助けてください!jquery、ajax、およびjsonを使い始めたばかりなので、概念的なエラーがあると思います。ありがとうございました。

いくつかの編集:

次の構文エラーが発生しました。

データベースに接続しました!
Notice : Undefined index: id in C:\xampp\htdocs\connection.php28

Notice : Undefined index: name in C:\xampp\htdocs\connection.php31

Notice : Undefined index: Address in C:\ xampp\htdocs\connection.php34
エラー: SQL 構文にエラーがあります。1 行目の ' '', '')' 付近で使用する正しい構文については、MySQL サーバーのバージョンに対応するマニュアルを確認してください。

だから私は自分のコードを

if (isset($_POST['id']))
$id= json_decode($_POST['id']);

if (isset($_POST['name']))
$name = json_decode($_POST['name']);

if (isset($_POST['Address']))
$Address = json_decode($_POST['Address']);

それでも同じエラーが発生する

助けてください!

4

3 に答える 3

1

このスクリプトを次のように変更してください:

$sql = "INSERT INTO sample (id, name, Address) ";
$sql .= "VALUES ($id, '$name', '$Address')";

に:

$sql = "INSERT INTO sample (id, name, Address) ";
$sql .= "VALUES ('$id', '$name', '$Address')";

' $idの周りに文字を追加します

于 2013-02-19T15:59:22.907 に答える
1

Phonegap で ajax リクエストに JSONP を使用できます。ただし、そのためには、JSONP を使用してサーバー ページへのクロス ドメイン リクエストを使用する必要があります。ここでは、コールバック メソッドを使用する必要があります。

私の投稿$.ajax() on phonegap を見てください

もう1つ、Androidからローカルホストにリクエストを送信しないでください。ファイルをウェブサーバーに置いて、リクエストを試みてください。

于 2012-07-10T10:06:32.537 に答える
1

Android を使用しているため、直接 connection.php は機能しません。これを行うための一般的な方法は次のとおりです。

http://www.mobitechie.com/android-2/how-to-access-localhost-on-android-over-wifi/

http://10.0.0.2/connection.php上記のリンクで指定されたものをセットアップした後、取得するネットワーク アドレスは 10.0.0.2 のようなものになり、サーバーをconnection.php がhtdocsディレクトリに配置されている場所に変更します。

Android は localhost を独自のデバイス localhost として扱い、システムの localhost を直接選択しないため、上記の手順が必要です。

この回答の下にさらにコメントして、さらに問題があるかどうかを尋ねてください。

于 2012-07-10T09:12:32.653 に答える