【问题标题】:Issue using Ajax to insert into mysql database使用 Ajax 插入 mysql 数据库的问题
【发布时间】:2016-04-13 20:57:11
【问题描述】:

我正在尝试从我的 phonegap 应用程序向我的数据库进行简单的插入,但它在调用 ajax 函数时所做的只是将整个 save.php 文件返回给我的成功函数。没有任何东西添加到数据库中,我尝试了第二个教程,但同样的事情发生了。我曾尝试更改 jQuery 和 jQuery mobile 的版本,但没有更改任何内容。我是使用 phonegap 和 jQuery 的新手,因此我们将不胜感激。

Screenshot of returned php file in alert

HTML:

        <script type="text/javascript" src="cordova.js"></script>
        <script type="text/javascript" src="js/index.js"></script>
        <script type="text/javascript" src="js/jquery.mobile-1.3.2.min.js"></script>
        <link rel="stylesheet" href="css/jquery.mobile-1.3.2.min.css" />
        <script src="js/jquery-1.5.min.js"></script>
        <script src="js/post.js"></script>

     <title>jQuery form post</title>




    <script>
        function onBodyLoad() {     
            document.addEventListener("deviceready",onDeviceReady,false);
        }
    </script>

    <style>
        label, b {
            display: block;
        }
    </style>
</head>
<body onload="onBodyLoad()">

<div id="landmark-1" data-landmark-id="1">
    <form>
        <label for="email">
            <b>Email</b>
            <input type="email" id="email" name="email">
        </label>

        <label for="comment">
            <b>Comment</b>
            <textarea id="comment" name="comment" cols="30" rows="10"></textarea>
        </label>

        <input type="submit" value="Save">
    </form>
</div>

</body>

Javascript:

$(document).bind('deviceready', function(){
    $(function(){
        $('form').submit(function(){
            var landmarkID = $(this).parent().attr('data-landmark-id');
            var postData = $(this).serialize();

            $.ajax({
                type: 'POST',
                data: postData+'&lid='+landmarkID,
                //change the url for your project
                url: 'save.php',
                success: function(data){
                    //console.log(data);
                    alert('Your comment was successfully added ' + data);
                },
                error: function(e){
                    //console.log(data);
                    alert('There was an error adding your comment');
                }
            });

            return false;
        });
    });
});

PHP:

<?php
$server = "xxxxx";
$username = "xxxxx";
$password = "xxxx";
$database = "xxxx";
$con = mysql_connect($server, $username, $password) or die ("Could not connect: " . mysql_error());
mysql_select_db($database, $con);
$locationID = $_POST["lid"];
$email = mysql_real_escape_string($_POST["email"]);
$comment = mysql_real_escape_string($_POST["comment"]);
$sql = "INSERT INTO comments (location_id, email, comment) ";
$sql .= "VALUES ($locationID, '$email', '$comment')";
if (!mysql_query($sql, $con)) {
    die('Error: ' . mysql_error());
} else {
    echo "Comment added";
}
mysql_close($con);
?>

Screenshot of returned php file in alert

【问题讨论】:

    标签: php jquery mysql ajax cordova


    【解决方案1】:

    听起来您需要配置服务器才能真正运行 PHP。
    一个简单的“hello world”php 文件有什么作用?
    尝试制作一个包含此内容的文件,并告诉我你得到了什么:

    <?PHP echo "Hello World"; ?>
    

    【讨论】:

    • 我在那里尝试过,它只是将 "" 作为数据参数返回给成功函数。我在我的计算机上本地运行 php 文件会影响它在手机上运行吗?我尝试通过 aws 虚拟机运行它,但抛出了一个错误。
    • 我的意思是,我想让你创建一个文件,比如“helloWorld.php”。然后,只需从浏览器转到该文件。所以如果你的服务器是 105.12.111.18,你会去 105.12.111.18/helloWorld.php,然后如果你看到除了“Hello World”之外的任何东西,这意味着你的服务器没有处理 PHP 文件。
    • 我认为您对服务器的看法是正确的。我已经将 xampp 添加到我的计算机中,并且 helloWorld.php 文件在我的浏览器中运行。然后我再次尝试使用保存在 htdocs 文件夹中的 php 文件再次运行上述代码,但是当我尝试访问 php 文件时,浏览器只会刷新。虽然没有将任何内容添加到数据库中。你知道这是什么原因造成的吗?
    • @Antonio 你需要在事件上调用jquery的“preventDefault”方法,否则提交表单会一直刷新页面。
    • 是的,那行得通,谢谢你完全迷路了
    【解决方案2】:

    我建议你在 PHP 上创建静态查询,替换:

    $sql .= "VALUES ($locationID, '$email', '$comment')";
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-12-12
      • 2022-11-13
      • 2011-08-30
      • 2020-10-24
      • 1970-01-01
      • 2021-07-01
      • 2016-12-08
      • 1970-01-01
      相关资源
      最近更新 更多