javascript - AJAX 未将日期发布到 PHP

标签 javascript php ajax

AJAX 正在将选定的日期 - ('articleDate') - 发送到 PHP 文档,然后在 SQL 语句中使用它,但是,当我运行 PHP 时,我的代码中出现未定义的错误,在线我声明的地方:

$date = $_POST['articleDate'];

表示该值没有被发布到 PHP。 我检查了代码,它在语义上似乎工作正常。是否有单独的方法在 AJAX 中发布“日期”值?

PHP 代码在没有使用 AJAX 时有效,并且表单是通过方法发布的 - 带有提交按钮的提示。

HTML <body>代码:

<div id="wrapper"> <!--wrapper start-->
<!--include navbar-->
<?php include 'include/navbar.php';?>

<div class="container" id="content"><!--container start-->
    <div class="jumbotron"><!--jumbotron start-->
        <div class="col-xs-12">
            <div class="row" id="date">
                <form>
                    <input class="form-control" type="date" id="articleDate" onchange="viewArticle(this.value)">
                </form>                    
            </div>
        </div>
        <div class="row">
           <div id="article">

           </div>
        </div> <!--Row end-->
    </div><!--Jumbotron End-->
    <?php require 'include/footer.php';?>
</div> <!--container end-->

Javascript

window.onload=function(){
    document.getElementById("articleDate").value="";
}
function viewArticle()
{
    $.ajax({
        type: "POST",
        url: "../pages/include/viewArticle.php",
        data: {
            Date: document.getElementById("articleDate").value
        },
        success: function (response) {
            document.getElementById("article").innerHTML=response; 
        },
        error: function(xhr, status, error) {
            alert('article not sent');
         },
    }); 
}

PHP代码(日期初始化是错误所在( undefined variable ):

#Get date
$date = $_POST['articleDate'];

$stmt = $conn->prepare("SELECT * FROM Article WHERE articleDate=? ORDER BY articleDate desc");
$stmt->bind_param("s", $date);
if($date !== "")
{
    if($stmt->execute()){
        $data = $stmt->get_result();

        #Check number of rows statement selects

        if($data->num_rows > 0)
        {
            #print data
            while($row = $data->fetch_assoc()){
                #create div
                echo ' <div class="col-lg-4 col-md-6 col-sm-6 col-xs-12" id="articleDiv">';
                echo "<img class='img-responsive' id='articleImage' src=".$row['articleThumbnail'].">";  
                echo '<h3><a href="article.php?id='.$row['articleId'].'">'.$row['articleHeadline'].'</a></h3>';
                echo '<p>',$row['articleSummary']," ",'</p>';
                echo '<div class="row" id="rowDetails">';
                echo '<p>' , $row['articleDate']," | " , $row['articleTopic'],'</p>';
                echo '</div>';            
                echo '</div>';
            }
        }
        else
        {
            echo "<p>No articles exist on this date</p>";
        }
    }
    #$stmt->close();
    #$conn->close();   
}
else{
    echo "Date not working";
}                      

undefined variable = $date

最佳答案

在 PHP 中,您通过名称 articleDate 获取已发布的参数:

$_POST['articleDate']

当您改为发送 Date 时。

你有两个选择:

  1. 您可以像这样更改 JS 中的参数名称:

    data: {
       articleDate: document.getElementById("articleDate").value
    },
    
  2. 或者您可以在您的 PHP 代码中更改它,例如:

    $_POST['Date']
    

关于javascript - AJAX 未将日期发布到 PHP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52503136/

相关文章:

javascript - 捕捉 SVG 在悬停时动画 SVG/在休假时重置 SVG

javascript - jQuery 加载数据到 jqGrid

javascript - 在 Google map 中按类别对标记进行分组

java - Web 服务器如何填充 $_POST 和 $_GET?

javascript - JSON 数据传递到 div 标签

javascript - 如何在 v4.0 中向 select2 元素添加类

PHP MySQL 检查 key ,如果未使用则执行

php - 在 PHPSpec stub 上仅模拟一种方法

ajax - ASP.Net MVC 模型不会绑定(bind)在 ajax post 上

asp.net - ScriptManagers 的 ScriptMode 中的 Debug 和 Release 有什么区别?