如何通过ajax将输入数据传递给另一个php?

时间:2015-05-29 04:58:19

标签: javascript php mysql ajax

有人可以告诉我这有什么问题吗?

我有一个索引页面,用户将输入2个日期并通过ajax将其发送到另一个php页面,即month.php。然后month.php将在mysql查询中使用这些用户输入的日期,并从数据库中选择数据。我的方法似乎不起作用。

的index.php

<SCRIPT>
        function loadMonth()
        {
            var xmlhttp;
            if (window.XMLHttpRequest)
                  {// code for IE7+, Firefox, Chrome, Opera, Safari
                  xmlhttp=new XMLHttpRequest();
                  }
            else
                  {// code for IE6, IE5
                  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
                  }
            xmlhttp.onreadystatechange=function()
              {
                  if (xmlhttp.readyState==4 && xmlhttp.status==200)
                    {
                    document.getElementById("myDivs").innerHTML=xmlhttp.responseText;
                    }
              }
            xmlhttp.open("GET","month.php",true);
            xmlhttp.send(); 
        }
</SCRIPT>

<div class="form" align="center">
        Select Dates<br>
        <input type="date" name="date1" ><br><br>
        To<br>
        <input type="date" name="date2" ><br><br>
        <input type="submit" onclick="loadMonth()" value="Search">
        <div id="myDivs"></div>
</div>

month.php

<?php
        $getdate1 = $_POST['date1'];
        $getdate2 = $_POST['date2'];
        $conn = mysqli_connect("localhost", "root", "", "table1");

            // Check connection
        if (!$conn) {
            die("Connection failed: " . mysqli_connect_error());
                }

            $today = date("Y-m-d");
            $sql = "SELECT items, COUNT(*) as Number
            FROM table1
            WHERE (date_table BETWEEN '".$getdate1."' AND '".$getdate2."')
            GROUP BY items";
            $result = mysqli_query($conn, $sql);
?>

我的代码似乎无法正常工作

2 个答案:

答案 0 :(得分:3)

您没有向month.php发送任何参数,您可以使用GET方法发送它,如下所示:

xmlhttp.open("GET","month.php?date1=someDate&date2=anotherDate",true); 

在PHP代码中:

$getdate1 = $_GET['date1'];
$getdate2 = $_GET['date2'];

或使用POST方法:

xmlhttp.open("POST","month.php",true);
xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
xmlhttp.send("date1=someDate&date2=anotherDate");

保持php代码就好了。

  

重要提示:请确保在使用之前转义值   SQL查询或使用预处理语句,除此之外,您是易受攻击的   到SQL注入。

您应该搜索“阻止SQL注入PHP”

答案 1 :(得分:1)

在open方法中使用以下代码

xmlhttp.open("GET","month.php?date1=yourdate&date2=yourdate",true);

date1和date2正在使用GET方法接收,所以在服务器端你应该有:

    $getdate1 = $_GET['date1'];
    $getdate2 = $_GET['date2'];

<强>编辑:

我还展示了如何使用

从输入类型中获取日期值

在你的html给输入字段的id属性中,以便在javascript中轻松访问

 <input type="date" name="date1" id = "iddate1" ><br><br>
 <input type="date" name="date2" id = "iddate2" ><br><br>

你的脚本部分:

    var fdate1 = document.getElementById('iddate1').value;
    var fdate2 = document.getElementById('iddate2').value;

    xmlhttp.open("GET","month.php?date1="+fdate1+"&date2="+fdate2,true);