无法通过$ _POST ['attime']获取时间数据来更新mysql

时间:2018-01-13 17:17:25

标签: php jquery mysql ajax

我使用https://github.com/weareoutman/clockpicker来设置时间:

    <script type="text/javascript">
$('.clockpicker-with-callbacks').clockpicker({
        donetext: 'Done',
        afterDone: function() {

        $.post( "2_settime.php", { 
            attime : this.value
        })      

        }
    })
    .find('input').change(function(){
        console.log(this.value);
    });
if (/Mobile/.test(navigator.userAgent)) {
    $('input').prop('readOnly', true);
}
</script>

这里是2_settime.php,其中包含数据:

<?
// Config file!
include "config.php";

// Create connection
$conn = new mysqli($dbhost, $dbusr, $dbpass, $dbname);
// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}
//param-vars

$attime=strval($_POST['attime']);
$attime=strval($_GET['attime']);
//$attime=$_POST['attime'];

//CHANGE STATUS

$conn->query("UPDATE 2dopuzzler SET attime = '$attime' WHERE ordernum = 123");

echo $attime;
?>

就是这样。我可以通过以下方式将时间写入mysql:2_settime.php?attime=18:51

echo $ attime; - 正常工作,但我无法从另一个php获取时间,这里是clockpicker。请帮忙。

更新<!/强>

为了确保它正确,我改变了脚本:

    <script type="text/javascript">
$('.clockpicker-with-callbacks').clockpicker({
        donetext: 'Done',
        afterDone: function() {

        $.post( "2_settime.php", { 
            attime: this.value
        }).done(function( data, status ) {

         console.log('data: '+data+' status: '+status);

         if(data == 'success' && status == 'success'){      

         }else{

         }
      }
);


        }
    })
    .find('input').change(function(){
        console.log(this.value);
    });
if (/Mobile/.test(navigator.userAgent)) {
    $('input').prop('readOnly', true);
}
</script>

因此。我进入我的控制台:data: status: success

1 个答案:

答案 0 :(得分:1)

看一下代码的这一部分:

$attime=strval($_POST['attime']);
$attime=strval($_GET['attime']);

你做了什么:

  • 首先,您通过$_POST['attime']将POST变量读入$attime
  • 然后您将$_GET['attime']写入现有变量$attime

由于未在发布请求中设置$_GET['attime'],您将丢失第一行中保存的值。

解决方案可能是:

if(isset($_POST['attime'])) {
    $attime=strval($_POST['attime']);
} else if(isset($_GET['attime'])) {
    $attime=strval($_GET['attime']);
} else {
    //not sent
    $attime=null;
}

或者,您可以使用$_REQUEST['attime']。但是,不清楚价值是通过获取还是发布