使用PHP在DB中存储值 - 来自JavaScript的Ajax调用

时间:2016-04-01 14:20:44

标签: 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”来调用我通过传递的参数确定的相应函数。所以我通过了datadatetime。我的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();
}

这是我用来阅读temperature参数的函数:

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];
}

你有什么想法我犯的错误吗? 感谢

1 个答案:

答案 0 :(得分: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);
 }
}

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