ajax调取php,mysql后台数据实例 2017年11月13日 14:33:27 ajax调取php,mysql后台数据实例

ajax调取php,mysql后台数据实例

前面总结有关angularjs调取php后台的实例,今天分享一个使用原生ajax调取mysql数据库数据的实例。
mysql数据库表数据部分:

mysql数据库表设计部分:

PHP代码:
  1. <?php
  2. header( "Access-Control-Allow-Origin: *");
  3. header( "Content-Type: application/json; charset=UTF-8");
  4. /*
  5. * + -----------------------------------------------------------
  6. * | 代码注释:
  7. * + -----------------------------------------------------------
  8. * | header("Access-Control-Allow-Origin: *");
  9. * | 解决跨域的问题
  10. * + -----------------------------------------------------------
  11. * | header("Content-Type: application/json; charset=UTF-8");
  12. * | 这里决定了你后台servlet的http服务返回到前台的数据类型。设置成json前台返回的
  13. * | 数据就是以json格式传输的。
  14. * + -----------------------------------------------------------
  15. * | 1、$mysqli 连接数据库
  16. * | 2、测试连接如果connect_errno>0则连接错误
  17. * | 3、$sql 查询数据库demo中的数据表angularjsFile
  18. * | 4、$mysqli_result 执行查询语句query返回数组类型(SELECT返回的是数组类型)
  19. * | 5、$outp 创建空对象,存储$mysqli_result中的记录
  20. * | 6、循环取出的记录数据,第一次执行$outp如过不为空则在对象的后面加上一个“,”。
  21. * | 注意:第一次程序执行的时候$outp肯定是空的,当第一次程序执行完毕后$outp就不会在为空,
  22. * | 这时候$outp中就有了一条记录。
  23. * + -----------------------------------------------------------
  24. * | php中的“.”是字符串连接的意思。
  25. * + -----------------------------------------------------------
  26. * | $outp = '{"records":['.$outp.']}';生成json格式的对象。
  27. * + -----------------------------------------------------------
  28. * | $mysqli->close();关闭数据库连接
  29. * + -----------------------------------------------------------
  30. * | echo($outp); 打印出数据。
  31. * + -----------------------------------------------------------
  32. * | 后台返回的json其实是一个对象,里面包含的是键值对,在键的名称自己定义,值为数组,
  33. * | 在数组中又包含的是对象。
  34. * | 注意一定要很了解josn的数据格式,数组中包含的对象其实就是从数据库中读取的值。
  35. * + -----------------------------------------------------------
  36. */
  37. // 连接数据库
  38. $mysqli = new mysqli( "localhost", "用户名t", "密码", "demo");
  39. // 判断连接是否成功
  40. if ($mysqli->connect_error> 0){
  41. echo "连接失败";
  42. }
  43. // 如果数据库连接成功则进行SQL语句的查询语句SELECT,查询angularfile
  44. $sql = "SELECT * FROM angularfile";
  45. $mysqli_result = $mysqli->query($sql);
  46. // 创建backResult空对象
  47. $backResult = "";
  48. // 执行while循环语句,循环数据库查询的结果集,并使用fetch_array()取出每条记录.
  49. while ($row = $mysqli_result->fetch_array(MYSQL_ASSOC)){
  50. // 判断$backResult是否为不为空,如果不为空则在值后面加上",".
  51. if ($backResult != ""){
  52. $backResult .= ",";
  53. };
  54. // 使用字符串拼接的方式为$$backResult变量创建对象,着个对象中保存的是数据库angularfile表中的每条记录.
  55. $backResult .= '{"Name":"' . $row[ "Name"] . '",';
  56. $backResult .= '"City":"' . $row[ "City"] . '",';
  57. $backResult .= '"Job":"' . $row[ "Job"] . '"}';
  58. }
  59. // 拼接返回的json对象,对象中键的名称为myfile,对象的值为数组.
  60. $backResult = '[' .$backResult . ']';
  61. // 关闭数据库连接
  62. $mysqli->close();
  63. // 打印返回给前台的json数据.
  64. echo $backResult;
  65. ?>
HTML部分:
  1. <!DOCTYPE HTML>
  2. <html>
  3. <head>
  4. <meta charset="utf-8">
  5. <title>ajax调取实例 </title>
  6. <script src="./js/newajax.js"> </script>
  7. <style type="text/css">
  8. #oUl{
  9.      border: 1px solid #f1f1f1;
  10.      width: 300px;
  11.      display: none;
  12.      list-style-type:none;
  13.      vertical-align: 0;
  14.      padding: 0;
  15.      font-size: 14px;      
  16. }
  17. #oUl li{
  18.      height: 40px;
  19.      line-height: 40px;
  20.      text-align: center;
  21. }
  22. #oUl li :nth-child(odd) {
  23.       background-color: #f1f1f1;
  24.     }
  25.      table tr :nth-child(even) {
  26.       background-color: #ffffff;
  27.     }
  28. </style>
  29. </head>
  30. <body>
  31. <button id="btn">点击 </button>
  32. <ul id="oUl"> </ul>
  33. <script type="text/javascript">
  34. window.onload = function(){
  35.   function myFunc(clickBtn,getData){
  36.     var oBtn = document.getElementById(clickBtn);
  37.     var oUl = document.getElementById(getData);
  38.     oBtn.onclick = function(){
  39.       oUl.style.display = 'block';
  40.       ajax( 'angularFile2.php', function(sucInfo){
  41.         var arr = eval(sucInfo);
  42.         //eval()方法是把一个语句内容解析成一个js可以识别的方法。
  43.         console.log(arr);
  44.         
  45.         for ( var i = 0, len = arr.length; i < len; i++) {
  46.           var oLi = document.createElement( "li"); //创建一个li标签
  47.           oLi.innerHTML = 'Name' + arr[i].Name + '&nbsp;&nbsp;' + 'City' + arr[i].City + '&nbsp;&nbsp;' + 'Job' + arr[i].Job;
  48.           oUl.appendChild(oLi);   //将li标签放在ul中
  49.         }
  50.       }, function(sucInfo){
  51.         alert( "请求失败");
  52.       });
  53.     }
  54.   }
  55.   myFunc( "btn", "oUl");
  56. }
  57. </script>
  58. </body>
  59. </html>
封装的newajax.js文件
  1. /*
  2. * + -------------------------------------------------------------------------------------------
  3. * | 函数说明:
  4. * + -------------------------------------------------------------------------------------------
  5. * | ajax 函数名称,可以取任意名称。在ajax这个函数中传递三个参数
  6. * + -------------------------------------------------------------------------------------------
  7. * | url (需要请求的url)
  8. * + -------------------------------------------------------------------------------------------
  9. * | funSucc (当请求成功时需要执行的DOM操作)
  10. * + -------------------------------------------------------------------------------------------
  11. * | funFail (当请求失败的时候需要执行的DOM操作)
  12. * + -------------------------------------------------------------------------------------------
  13. * | open方法 (接收三个必填参数,1.请求方法GET/POST,2.请求页面的url,3.是否执行异步交互)
  14. * + -------------------------------------------------------------------------------------------
  15. * | send方法 (向服务器发出请求,如果采用的是异步方式,该方法会立即返回)
  16. * + -------------------------------------------------------------------------------------------
  17. * | readyState属性 (判断此时浏览器与服务器的状态,值为4时表示完成,即响应数据接收完成)
  18. * + -------------------------------------------------------------------------------------------
  19. * | status属性 (服务器返回的状态,值为200表示成功)
  20. * + -------------------------------------------------------------------------------------------
  21. * | 如果XMLHttpRequest的状态为4且服务器返回的状态码为200的情况下则读取服务器返回的文本信息
  22. * + -------------------------------------------------------------------------------------------
  23. * | 否则弹出错误提示
  24. * + -------------------------------------------------------------------------------------------
  25. */
  26. function ajax(url,funSucc,funFail){
  27. var xmlhttp;
  28. // 1.创建AJAX对象
  29. if (window.XMLHttpRequest) {
  30. // 所有现代主流浏览器基本都支持包括IE7+
  31. xmlhttp = new XMLHttpRequest();
  32. }else{
  33. // 主要兼容IE5、IE6
  34. xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
  35. }
  36. // 2.连接服务器
  37. // open(方法,url,异步交互)
  38. xmlhttp.open("POST", url, true);
  39. xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
  40. // 3.发送请求
  41. xmlhttp.send();
  42. // 4.接收返回的数据
  43. xmlhttp.onreadystatechange=function ()
  44. {
  45. //oAjax.readyState //浏览器和服务器,进行到哪一步了
  46. if(xmlhttp.readyState==4) //读取完成
  47. {
  48. if(xmlhttp.status==200) //成功
  49. {
  50. funSucc(xmlhttp.responseText);
  51. }
  52. else
  53. {
  54. funFail(xmlhttp.status);
  55. }
  56. }
  57. };
  58. };
运行上面代码结果如下图:

注意:将文件放在服务器中运行,否则如果用谷歌浏览器运行会报跨域错误,上面是用原生ajax来调用后台数据库数据,我们之前写过angularjs调用后台数据 angularjs $http服务--XMLHTTPRequest && SQL
其实在写这两个实例的时候我发现我们在写后台返回给前端的json数据的格式是有所不同。

使用angularjs调取时:
angularjs中$http服务接收的数据需要是一个对象,基本格式是对象里面包含数组,数组中又包含着若干的对象。
使用ajax调取时:
在使用ajax调取的时候前端接收到的是一个数组对象,数组中包含着若干的对象。
如有理解不当之处,欢迎各位老铁留言指正。谢谢!!!!
前面总结有关angularjs调取php后台的实例,今天分享一个使用原生ajax调取mysql数据库数据的实例。
mysql数据库表数据部分:

mysql数据库表设计部分:

PHP代码:
  1. <?php
  2. header( "Access-Control-Allow-Origin: *");
  3. header( "Content-Type: application/json; charset=UTF-8");
  4. /*
  5. * + -----------------------------------------------------------
  6. * | 代码注释:
  7. * + -----------------------------------------------------------
  8. * | header("Access-Control-Allow-Origin: *");
  9. * | 解决跨域的问题
  10. * + -----------------------------------------------------------
  11. * | header("Content-Type: application/json; charset=UTF-8");
  12. * | 这里决定了你后台servlet的http服务返回到前台的数据类型。设置成json前台返回的
  13. * | 数据就是以json格式传输的。
  14. * + -----------------------------------------------------------
  15. * | 1、$mysqli 连接数据库
  16. * | 2、测试连接如果connect_errno>0则连接错误
  17. * | 3、$sql 查询数据库demo中的数据表angularjsFile
  18. * | 4、$mysqli_result 执行查询语句query返回数组类型(SELECT返回的是数组类型)
  19. * | 5、$outp 创建空对象,存储$mysqli_result中的记录
  20. * | 6、循环取出的记录数据,第一次执行$outp如过不为空则在对象的后面加上一个“,”。
  21. * | 注意:第一次程序执行的时候$outp肯定是空的,当第一次程序执行完毕后$outp就不会在为空,
  22. * | 这时候$outp中就有了一条记录。
  23. * + -----------------------------------------------------------
  24. * | php中的“.”是字符串连接的意思。
  25. * + -----------------------------------------------------------
  26. * | $outp = '{"records":['.$outp.']}';生成json格式的对象。
  27. * + -----------------------------------------------------------
  28. * | $mysqli->close();关闭数据库连接
  29. * + -----------------------------------------------------------
  30. * | echo($outp); 打印出数据。
  31. * + -----------------------------------------------------------
  32. * | 后台返回的json其实是一个对象,里面包含的是键值对,在键的名称自己定义,值为数组,
  33. * | 在数组中又包含的是对象。
  34. * | 注意一定要很了解josn的数据格式,数组中包含的对象其实就是从数据库中读取的值。
  35. * + -----------------------------------------------------------
  36. */
  37. // 连接数据库
  38. $mysqli = new mysqli( "localhost", "用户名t", "密码", "demo");
  39. // 判断连接是否成功
  40. if ($mysqli->connect_error> 0){
  41. echo "连接失败";
  42. }
  43. // 如果数据库连接成功则进行SQL语句的查询语句SELECT,查询angularfile
  44. $sql = "SELECT * FROM angularfile";
  45. $mysqli_result = $mysqli->query($sql);
  46. // 创建backResult空对象
  47. $backResult = "";
  48. // 执行while循环语句,循环数据库查询的结果集,并使用fetch_array()取出每条记录.
  49. while ($row = $mysqli_result->fetch_array(MYSQL_ASSOC)){
  50. // 判断$backResult是否为不为空,如果不为空则在值后面加上",".
  51. if ($backResult != ""){
  52. $backResult .= ",";
  53. };
  54. // 使用字符串拼接的方式为$$backResult变量创建对象,着个对象中保存的是数据库angularfile表中的每条记录.
  55. $backResult .= '{"Name":"' . $row[ "Name"] . '",';
  56. $backResult .= '"City":"' . $row[ "City"] . '",';
  57. $backResult .= '"Job":"' . $row[ "Job"] . '"}';
  58. }
  59. // 拼接返回的json对象,对象中键的名称为myfile,对象的值为数组.
  60. $backResult = '[' .$backResult . ']';
  61. // 关闭数据库连接
  62. $mysqli->close();
  63. // 打印返回给前台的json数据.
  64. echo $backResult;
  65. ?>
HTML部分:
  1. <!DOCTYPE HTML>
  2. <html>
  3. <head>
  4. <meta charset="utf-8">
  5. <title>ajax调取实例 </title>
  6. <script src="./js/newajax.js"> </script>
  7. <style type="text/css">
  8. #oUl{
  9.      border: 1px solid #f1f1f1;
  10.      width: 300px;
  11.      display: none;
  12.      list-style-type:none;
  13.      vertical-align: 0;
  14.      padding: 0;
  15.      font-size: 14px;      
  16. }
  17. #oUl li{
  18.      height: 40px;
  19.      line-height: 40px;
  20.      text-align: center;
  21. }
  22. #oUl li :nth-child(odd) {
  23.       background-color: #f1f1f1;
  24.     }
  25.      table tr :nth-child(even) {
  26.       background-color: #ffffff;
  27.     }
  28. </style>
  29. </head>
  30. <body>
  31. <button id="btn">点击 </button>
  32. <ul id="oUl"> </ul>
  33. <script type="text/javascript">
  34. window.onload = function(){
  35.   function myFunc(clickBtn,getData){
  36.     var oBtn = document.getElementById(clickBtn);
  37.     var oUl = document.getElementById(getData);
  38.     oBtn.onclick = function(){
  39.       oUl.style.display = 'block';
  40.       ajax( 'angularFile2.php', function(sucInfo){
  41.         var arr = eval(sucInfo);
  42.         //eval()方法是把一个语句内容解析成一个js可以识别的方法。
  43.         console.log(arr);
  44.         
  45.         for ( var i = 0, len = arr.length; i < len; i++) {
  46.           var oLi = document.createElement( "li"); //创建一个li标签
  47.           oLi.innerHTML = 'Name' + arr[i].Name + '&nbsp;&nbsp;' + 'City' + arr[i].City + '&nbsp;&nbsp;' + 'Job' + arr[i].Job;
  48.           oUl.appendChild(oLi);   //将li标签放在ul中
  49.         }
  50.       }, function(sucInfo){
  51.         alert( "请求失败");
  52.       });
  53.     }
  54.   }
  55.   myFunc( "btn", "oUl");
  56. }
  57. </script>
  58. </body>
  59. </html>
封装的newajax.js文件
  1. /*
  2. * + -------------------------------------------------------------------------------------------
  3. * | 函数说明:
  4. * + -------------------------------------------------------------------------------------------
  5. * | ajax 函数名称,可以取任意名称。在ajax这个函数中传递三个参数
  6. * + -------------------------------------------------------------------------------------------
  7. * | url (需要请求的url)
  8. * + -------------------------------------------------------------------------------------------
  9. * | funSucc (当请求成功时需要执行的DOM操作)
  10. * + -------------------------------------------------------------------------------------------
  11. * | funFail (当请求失败的时候需要执行的DOM操作)
  12. * + -------------------------------------------------------------------------------------------
  13. * | open方法 (接收三个必填参数,1.请求方法GET/POST,2.请求页面的url,3.是否执行异步交互)
  14. * + -------------------------------------------------------------------------------------------
  15. * | send方法 (向服务器发出请求,如果采用的是异步方式,该方法会立即返回)
  16. * + -------------------------------------------------------------------------------------------
  17. * | readyState属性 (判断此时浏览器与服务器的状态,值为4时表示完成,即响应数据接收完成)
  18. * + -------------------------------------------------------------------------------------------
  19. * | status属性 (服务器返回的状态,值为200表示成功)
  20. * + -------------------------------------------------------------------------------------------
  21. * | 如果XMLHttpRequest的状态为4且服务器返回的状态码为200的情况下则读取服务器返回的文本信息
  22. * + -------------------------------------------------------------------------------------------
  23. * | 否则弹出错误提示
  24. * + -------------------------------------------------------------------------------------------
  25. */
  26. function ajax(url,funSucc,funFail){
  27. var xmlhttp;
  28. // 1.创建AJAX对象
  29. if (window.XMLHttpRequest) {
  30. // 所有现代主流浏览器基本都支持包括IE7+
  31. xmlhttp = new XMLHttpRequest();
  32. }else{
  33. // 主要兼容IE5、IE6
  34. xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
  35. }
  36. // 2.连接服务器
  37. // open(方法,url,异步交互)
  38. xmlhttp.open("POST", url, true);
  39. xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
  40. // 3.发送请求
  41. xmlhttp.send();
  42. // 4.接收返回的数据
  43. xmlhttp.onreadystatechange=function ()
  44. {
  45. //oAjax.readyState //浏览器和服务器,进行到哪一步了
  46. if(xmlhttp.readyState==4) //读取完成
  47. {
  48. if(xmlhttp.status==200) //成功
  49. {
  50. funSucc(xmlhttp.responseText);
  51. }
  52. else
  53. {
  54. funFail(xmlhttp.status);
  55. }
  56. }
  57. };
  58. };
运行上面代码结果如下图:

注意:将文件放在服务器中运行,否则如果用谷歌浏览器运行会报跨域错误,上面是用原生ajax来调用后台数据库数据,我们之前写过angularjs调用后台数据 angularjs $http服务--XMLHTTPRequest && SQL
其实在写这两个实例的时候我发现我们在写后台返回给前端的json数据的格式是有所不同。

使用angularjs调取时:
angularjs中$http服务接收的数据需要是一个对象,基本格式是对象里面包含数组,数组中又包含着若干的对象。
使用ajax调取时:
在使用ajax调取的时候前端接收到的是一个数组对象,数组中包含着若干的对象。
如有理解不当之处,欢迎各位老铁留言指正。谢谢!!!!

猜你喜欢

转载自blog.csdn.net/qq_36571778/article/details/80861950
今日推荐