我正在尝试计算两个特定日期之间售价的总和。我的查询没问题,但是当我在PHP中使用它时它没有返回任何内容。它直接在数据库中执行时有效。 这是我的代码,
<html>
<body>
<script language="javascript" type="text/javascript">
<!--
//Browser Support Code
function ajaxFunction(){
var ajaxRequest; // The variable that makes Ajax possible!
try{
// Opera 8.0+, Firefox, Safari
ajaxRequest = new XMLHttpRequest();
}catch (e){
// Internet Explorer Browsers
try{
ajaxRequest = new ActiveXObject("Msxml2.XMLHTTP");
}catch (e) {
try{
ajaxRequest = new ActiveXObject("Microsoft.XMLHTTP");
}catch (e){
// Something went wrong
alert("Your browser broke!");
return false;
}
}
}
ajaxRequest.onreadystatechange = function(){
if(ajaxRequest.readyState == 4){
var ajaxDisplay = document.getElementById('ajaxDiv');
ajaxDisplay.innerHTML = ajaxRequest.responseText;
}
}
var startdate = document.getElementById('startdate').value;
var enddate = document.getElementById('enddate').value;
var queryString = "?startdate=" + startdate ;
queryString += "&enddate=" + enddate;
ajaxRequest.open("GET", "ajax-example.php" + queryString, true);
ajaxRequest.send(null);
}
//-->
</script>
<form name='myForm'>
Start Date: <input type='date' id='startdate' /> <br />
End Date: <input type='date' id='enddate' /> <br />
<input type='button' onclick='ajaxFunction()' value='Query MySQL'/>
</form>
<div id='ajaxDiv'>Your result will display here</div>
</body>
</html>
这是我的PHP代码
<?php
$dbhost = "localhost";
$dbuser = "root";
$dbpass = "";
$dbname = "temp";
//Connect to MySQL Server
mysql_connect($dbhost, $dbuser, $dbpass);
//Select Database
mysql_select_db($dbname) or die(mysql_error());
// Retrieve data from Query String
$startdate = $_GET['startdate'];
$enddate = $_GET['enddate'];
//build query
$query = "SELECT SUM(price) FROM ajax_example WHERE daterec >= '$startdate'";
$query .= " AND daterec <= '$enddate'";
//Execute query
$qry_result = mysql_query($query) or die(mysql_error());
echo "Query: " . $query . "<br />";
?>
我做错了什么?提前谢谢
答案 0 :(得分:0)
在按钮单击处理程序中,尝试返回false。我的第一直觉是你的表单是由该按钮提交的,你的AJAX请求永远不会完成。
<input type='button' onclick='ajaxFunction(); return false;' value='Query MySQL'/>
如果仍然无法解决问题,请打开谷歌浏览器和网络调试工具。执行AJAX请求时,请检查请求和响应数据。
此外,您应该优化JavaScript以提高效率。
以下是JS的一小部分内容,可以在您的情况下使用:
var get = function(path) {
return new Promise(function(resolve, reject) {
var request = new XMLHttpRequest();
request.open('GET', path);
request.onload = function() {
if (request.status == 200)
resolve(request.response);
else
reject(Error(request.statusText));
};
request.onerror = function() {
reject(Error(request.statusText));
};
request.send();
});
}
function fetchQueryResults() {
get('/test.php').then(function(response) {
var el = document.getElementById('results');
el.innerHTML = response;
}).catch(function(error) {
// Something went wrong, handle the error here
});
return false;
}
答案 1 :(得分:0)
Satisj Rajak!你是对的!
首先,在PHP 5.5.0之后,这个函数将被弃用,尽量不要使用它。
第二,获得你所拥有的结果&#34;转换&#34;使用此示例代码的关联数组中的变量:
while ($row = mysql_fetch_assoc($result)) {
echo $row['field_name'];
}
如果您使用ajax,请尝试发送json格式的响应。
希望我的回答可以帮到你。