javascript - 使用 PHP 将值存储在数据库中 - 来自 JavaScript 的 Ajax 调用

标签 javascript php mysql ajax

我想用 PHP 在数据库中存储一个值。我使用 AJAX 调用 PHP 函数。

我检查 document.ready() 是否使用名为 Temperature 的参数调用网站:

$(document).ready(function(){
    var data = 5; //gup('temperature', location.href);
    if(data != undefined){
        var sendData = 'func=storeValue&value=' + data + '&datetime=' + getDateTime();
        $.ajax({
            data: sendData,
            type: "POST",
            url: "FunctionManager.php",
            success: function(data){
                alert("Data Saved " + data);
            },
            error: function(xhr){
                alert(xhr.responseText);
            }
        })
    }
}

我使用 php 文件“FunctionManager”来调用我根据传递的参数确定的相应函数。所以我传递了数据日期时间。我的 FunctionManager 看起来像这样:

    <?php
        include "$_SERVER[DOCUMENT_ROOT]/SQLCommunication.php";

        header('Content-Type: application/json');
        if(!isset($_GET['func']) && empty($_GET['func'])){
           exit();
        }

        if($_POST['func'] === "readValue"){
           echo readValue();
        }elseif($_POST['func'] === "storeValue"){
           echo storeValue($_POST["value"], $_POST["datetime"]);
        }
    ?>

正如你所看到的,我首先检查调用了哪个函数,然后使用参数调用函数本身。我知道这是可行的,因为在使用参数调用网站后,我的数据库中有一个新行。但字段 datetimevalue 始终为零。 我的 storeValue- 函数位于 SQLCommunication.php 中,如下所示:

function storeValue($val, $datetime){        
    $conn = establishConnection();
    if($conn->connect_error){
        die("Connection failed: ". $conn->connect_error);
    }

    //$datetime = date_default_timezone_get();
    //$datetime = '2016-01-04 00:18:00';

    $sql = "INSERT INTO tempvalues (datetime, value) VALUES ('$datetime', '$val')";
    $conn->query($sql);
    $conn->close();
}

这是我用来读取温度参数的函数:

function gup( name, url ) {
  if (!url) url = location.href;
  name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
  var regexS = "[\\?&]"+name+"=([^&#]*)";
  var regex = new RegExp( regexS );
  var results = regex.exec( url ).toString();
  return results == null ? null : results[1];
}

你知道我犯了什么错误吗? 谢谢

最佳答案

jquery代码一定是这样的。如果您查看浏览器控制台,您可能会看到一些错误。 jquery 应该是这样的:

var date = new Date();
var year = date.getFullYear();
var month = date.getMonth() + 1;
var day = date.getDate();
var hours = date.getHours();
var minutes = date.getMinutes();
var seconds = date.getSeconds();

newdate = year + "-" + month + "-" + day + " " + hours + ":" + minutes + ":" + seconds;

$(document).ready(function(){
    var storeValue = 'storeValue';
    var data = gup('temperature', location.href);        
    if(data != undefined){
    yourData = 'func='+storeValue+'&value='+data+'&newdate='+newdate;
        $.ajax({
            data: yourData,
            type: "POST",
            url: "FunctionManager.php,
            success: function(data){
                alert("Data Saved " + data);
            },
            error: function(xhr){
                alert(xhr.responseText);
            }
        });
    }
});

在 Functionmanager.php 中

    print_r($_POST);

    include "$_SERVER[DOCUMENT_ROOT]/SQLCommunication.php";

    header('Content-Type: application/json');
    if(!isset($_POST['func']) || empty($_POST['func'])){
       exit();
    }else{

 $func = isset($_POST['func'])? $_POST['func']: 'storeValue';
 $val = isset($_POST['value'])? $_POST['value']:'';
 $datetime = isset($_POST['newdate'])? $_POST['newdate']:'';

 if($func == 'readValue'){
        echo readValue();
 }elseif($func == 'storeValue'){
        echo storeValue($val, $datetime);
 }
}

在表的日期字段中,将数据类型设置为日期时间。希望这可能有所帮助。

关于javascript - 使用 PHP 将值存储在数据库中 - 来自 JavaScript 的 Ajax 调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36358754/

相关文章:

PHP 日期池中的最大天数

mysql - 将十进制值转换为前 10 位

javascript - 如何应用嵌套选择标签上的更改事件

javascript - 我无法使用 javascript 来控制 chrome 中的音频

javascript - CSV 到 HTML 表格

javascript - Node.js源码无法搜索某个用户id

php - 我如何在服务器上搜索 php session ?

php - 在 mysql 上加入和过滤来自多个表的数据的快速方法

php - 如何替换 php 数组中特定键的值?

mysql - Amazon RDS(关系数据存储)和 SSIS