通过 ajax 将变量发布到 mysql db - phonegap

Posted

技术标签:

【中文标题】通过 ajax 将变量发布到 mysql db - phonegap【英文标题】:Post variable via ajax to mysql db - phonegap 【发布时间】:2015-09-13 08:16:04 【问题描述】:

我只想将一个简单的变量从我的 phonegap 应用程序发布到 mysql 数据库。但它不起作用。 db 显示空结果。

Mysql数据库长这样,Tablename是user

行:

user (varchar 25),vip (varchar 1),call (varchar 1)

在我的项目顶部我插入:

            <script type="text/javascript" src="js/tcPlugin.js"></script>
            <script type="text/javascript" src="js/phoneApp.js"></script>
            <script type="text/javascript" src="js/start.js"></script>

start.js 是我的 ajax 请求文件 - 其他两个工作正常,所以我想没有问题

我的 start.js 文件如下所示:

$(document).ready( function() 
                  var email = "john@web.de"; 

                  $.ajax(
                         type: 'post',
                         url: 'http://www.blablabla.de/phone/action.php',
                         data: 
                         data: "email" : email ,
                         //data:email,
                         ,
                         success: function(result) 
                         console.log(result);
                         
                         );

我的 action.php 看起来像这样:

<?php
        $dbhost = "bla";
        $dbuser = "bla";
        $dbpass = "bla";
        $dbname = "bla";



$user = $_POST['data']['email'];

$conn = new mysqli($dbhost, $dbuser, $dbpass, $dbname);

if ($conn->connect_error) 
    die("Connection failed: " . $conn->connect_error);
 

$sql = "INSERT INTO user (email)
VALUES ('" . $user . "')";


if ($conn->query($sql) === TRUE) 
    echo "New record created successfully";
 else 
    echo "Error: " . $sql . "<br>" . $conn->error;


$conn->close();

?>

但每次我启动应用程序时,数据库都是空的。调试器 concole 没有给我任何错误。 db 连接正在工作,尝试使用 echo 连接结果。其他 js 工作正常。

【问题讨论】:

您尝试像 print_r($_POST) 这样打印我们的 POST 数据?或者结果如何? 把这个data: data: "email" : email , //data:email, ,改成这个data: "email" : email , 然后再试一次 在您的 ajax 调用中添加一个“错误”回调并输出响应。只有当响应的状态为 200 时,才会调用“成功”回调。 同时检查您的 php.ini 文件以确保您正在记录和显示错误。如果不添加“error_reporting = E_ALL & ~E_NOTICE”和“display_errors = 1” 【参考方案1】:

action.php

<?php
        $dbhost = "bla";
        $dbuser = "bla";
        $dbpass = "bla";
        $dbname = "bla";

print_r($_POST); // see full contents of the POST

$user = $_POST['data']['email'];

print PHP_EOL . $user . PHP_EOL; // see full contents of the $user var

$conn = new mysqli($dbhost, $dbuser, $dbpass, $dbname);

if ($conn->connect_error) 
    die("Connection failed: " . $conn->connect_error);
 

$sql = "INSERT INTO user (email) VALUES ('" . $user . "')";

print PHP_EOL . $sql . PHP_EOL; // see the actual sql query, you can test this later in your sql editor ex. phpmyadmin


if ($conn->query($sql) === TRUE) 
    echo "New record created successfully";
 else 
    echo "Error: " . $sql . "<br>" . $conn->error;


$conn->close();

?>

进行这些编辑,运行 ajax 并检查调试器中的响应选项卡。

【讨论】:

如果我在浏览器中将 action.php 作为单个文档运行 - 它会返回“Array () INSERT INTO user (user) VALUES ('') New record created successfully”。当我运行我的应用程序时,数据库中没有发生任何事情。没有空条目,也没有数据。

以上是关于通过 ajax 将变量发布到 mysql db - phonegap的主要内容,如果未能解决你的问题,请参考以下文章

通过 mysql db 中的数据和变量数据创建 json

Ajax - 通过 ajax 将输入文件和附加变量发送到 php 文件

无法使用 PHP 和 JQuery Ajax 将新记录插入 mysql db

通过 ajax 将 Javascript 变量传递给 PHP

使用ajax从mysql DB检索和打印数据到文本框(如何在同一个php页面中使用它两次)

使用 jquery .ajax 从 mySQL DB 中检索记录