使用Ajax从mysql获取数据

时间:2015-04-07 13:06:59

标签: php mysql ajax

我正在尝试计算两个特定日期之间售价的总和。我的查询没问题,但是当我在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 />";


?>

我做错了什么?提前谢谢

2 个答案:

答案 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!你是对的!

检查mysql_query

首先,在PHP 5.5.0之后,这个函数将被弃用,尽量不要使用它。

第二,获得你所拥有的结果&#34;转换&#34;使用此示例代码的关联数组中的变量:

    while ($row = mysql_fetch_assoc($result)) {
    echo $row['field_name'];
}

如果您使用ajax,请尝试发送json格式的响应。

希望我的回答可以帮到你。