0

我正在尝试制作 -

  • 一个安卓 WEB 应用程序
  • 带电话间隙
  • 使用 JqueryMobile 进行布局

我在做什么——

  • 以 ID、姓名和地址为输入的 html 表单
  • '使用 ajax 序列化这些数据
  • 用它制作一个 json 对象
  • 应该将它发送到一个名为“connection.php”的文件
  • 在哪里,这些数据被放入数据库(MySql)

其他详情 -

  • 我的服务器是本地主机,我使用 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 文件。

我怀疑的东西:

  • 我应该使用 jsonp 而不是 json 吗?我对此很陌生。
  • 我的php文件有问题吗?
  • 也许我需要在我的 html 文件中包含更多的 javascript 文件?

我认为这是一个非常简单的问题,所以请帮助我!我认为这只是一些概念上的错误,因为我刚刚开始使用 jquery、ajax 和 json。谢谢你。

一些编辑:

我收到以下语法错误:

已连接数据库!
注意:未定义索引:第28C:\xampp\htdocs\connection.php中的id注意:未定义索引:第31C:\xampp\htdocs\connection.php中的名称注意:未定义索引: C:\中的地址第34行的xampp\htdocs\connection.php 错误:您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 1 行的 ''', '')' 附近使用正确的语法




所以我将代码更改为

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

您可以在 Phonegap 中将 JSONP 用于 ajax 请求。但为此,您必须使用 JSONP 对服务器页面使用跨域请求。在这里你必须使用回调方法。

只需浏览我在 phonegap 上的 $.ajax() 帖子

还有一件事,不要从 android 向 localhost 发出请求。只需将您的文件放入网络服务器并尝试发出请求。

于 2012-07-10T10:06:32.537 回答
1

由于您使用的是 android,因此直接 connection.php 不起作用,这是完成此操作的一般方法:

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

在您设置上面链接中给出的内容后,您将获得的网络地址将类似于 10.0.0.2 然后将您的服务器更改为http://10.0.0.2/connection.phpconnection.php 放置在htdocs目录中的位置。

上述步骤是必要的,因为 android 将 localhost 视为自己的设备 localhost,并且不会直接选择系统的 localhost。

在此答案下进一步评论以询问您是否还有更多问题。

于 2012-07-10T09:12:32.653 回答
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 回答