javascript - SQL 查询上的 PHP AJAX 日期时间范围问题

标签 javascript php sql-server ajax datetime

我有一个大问题,我希望能在这里找到解决方案。经过 4 天无用的搜索,我来这里寻求解决方案。

这是我的问题。我使用 SQL Server 数据库和 php 作为服务器端语言,通过 AJAX 将参数发送到 php 服务器。

如果用户输入某个日期范围,我的网络应用程序必须显示一些数据的列表。

这是我的 html 表单代码:

<form method="post" action="">

    <input type="text" placeholder="Start date : dd/mm/yyyy" id="date1" name="date1">
    <input type="text" placeholder="Date de fin : dd/mm/yyy" id="date2" name="date2">
    <input type="BUTTON" class="my-button" value="Show Data" onClick="LoadData()">

</form>

这是我的 JavaScript 函数 LoadData()

<script>
function LoadData(){
    var url = "json.php";

        var date1=document.getElementById('date1');
        var date2=document.getElementById('date2');
        var xmlhttp = new XMLHttpRequest();

        var params= 'date1=' + date1 + '&date2=' + date2 ;
        xmlhttp.onreadystatechange=function() {
        if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
        myFunction(xmlhttp.responseText);
                        }
                    }
        xmlhttp.open("POST", url, true);
        xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
        xmlhttp.send(params);


        function myFunction(response) {

        var arr = JSON.parse(response);
        var i; 
        var sum = 0;
        var out = "";               
        for(i = 0; i < arr.length; i++) 

        out += '<li><div class="news_desc"><table width="100%" border="1"><tr><td width="70%"><h4><a>' + 
                            arr[i].Name +
                            '</h4></td><td width="30%">' +
                            arr[i].Price +
                            '</td></tr><tr><td><p>' +
                            arr[i].Date +
                            '</p></td><td>&nbsp;</td></tr></table></div><div class="clear"> </div></li>' ;

                        }
        out += ''
        document.getElementById("id01").innerHTML = out;

    }
        }

</script>

这是我的 php 脚本

if(isset($_POST['date1']) && isset($_POST['date2']) )
{
    $date1 = $_POST["date1"];
    $date2 = $_POST["date2"];

        $db_name  = "DATABASE";
        $hostname = 'IO-SD-L1';
        $username = '';
        $password = '';

       // connect to the database
        $dbh = new PDO( "sqlsrv:Server= $hostname ; Database = $db_name ", $username, $password);

        $sql = "SELECT name, CAST( DateReg AS DATE ) AS dateIn, price FROM TBL_USERS
                WHERE CAST( DateReg AS DATE )BETWEEN '".$date1."'AND '".$date2."'";

     // the DateReg is datetime type

        $stmt = $dbh->prepare( $sql );
        $stmt->execute();
        $result = $stmt->fetchAll( PDO::FETCH_ASSOC );

        foreach ($result as $row){
        $return[]=array('Name'=>$row['name'],
                    'Date'=>$row['dateIn'],
                    'Price'=>$row['price']);

}
$dbh = null;

echo json_encode($return); } 

如果我将日期范围直接放在代码中,例如 date1="12/12/2011"; date2="11/12/2014" 它工作得很好,但是如果我在两个日期文本字段中通过用户输入选择日期范围并单击“显示数据”按钮,我什么也得不到。

最佳答案

所以你是说当你输入一个日期(硬编码)时它工作得很好;但是当您通过文本框控件输入相同的日期时;不起作用?如果是这样,我会在获取输入数据后执行以下操作: console.log(params) 。你会发现,它和你想象的不一样;我怀疑。

如果您希望改用 jQuery(因为它简化了 xmlhttp 处理程序...尝试如下:

var  formData = "name=johndoe&age=24";  // name value pair
// or...
var formData = { name : "johndoe", age : "24" }; // object

$.ajax({
    url : "/your/url/goes/here.php",
    type: "POST",
    data : formData,
    // if you wish to send the object as JSON, you will need to do this instead of the above...
    // data: JSON.stringify(formData),
    // you will also need to uncomment the next line
    // contentType: "application/json; charset=utf-8",
    success: function(data, textStatus, jqXHR)
    {
        console.log(data);
    },
    error: function (jqXHR, textStatus, errorThrown)
    {
        console.log(errorThrown);
    }
});

引用号。 What is content-type and datatype in an AJAX request?

关于javascript - SQL 查询上的 PHP AJAX 日期时间范围问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26803596/

相关文章:

java - 像ucwords一样使用正则表达式制作首字母大写

javascript - 如何在自提交表单上使用 mailto?

c# - 如何从 C# WinForms 应用程序判断 SQL Server 自动升级是否成功

javascript - 将基于类的对象传递给 Angular Directive(指令)

javascript - 如何在 AngularJS 的 Controller 中使用独特的过滤器

php - 实时查看apache错误日志

sql-server - SQL 服务器 2005 : map Transaction_ID to @@SPID

sql - 将格式为 yyyymmddhhnn 的字符串转换为日期时间

javascript - 通过从 NodeJS 中执行 PHP 脚本来重新启动 NodeJS

javascript - 用户浏览器缩放时如何处理覆盖