我有一个大问题,我希望能在这里找到解决方案。经过 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> </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);
}
});
关于javascript - SQL 查询上的 PHP AJAX 日期时间范围问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26803596/