1. 程式人生 > >ajax調取php,mysql後臺資料例項

ajax調取php,mysql後臺資料例項

前面總結有關angularjs調取php後臺的例項,今天分享一個使用原生ajax調取mysql資料庫資料的例項。
mysql資料庫表資料部分:

mysql資料庫表設計部分:
PHP程式碼:
<?php
header("Access-Control-Allow-Origin: *");
header("Content-Type: application/json; charset=UTF-8");
/* 
 * + -----------------------------------------------------------
 * | 程式碼註釋:
 * + -----------------------------------------------------------
 * | header("Access-Control-Allow-Origin: *");
 * | 解決跨域的問題
 * + -----------------------------------------------------------
 * | header("Content-Type: application/json; charset=UTF-8");
 * | 這裡決定了你後臺servlet的http服務返回到前臺的資料型別。設定成json前臺返回的
 * | 資料就是以json格式傳輸的。
 * + -----------------------------------------------------------
 * | 1、$mysqli 連線資料庫
 * | 2、測試連線如果connect_errno>0則連線錯誤    
 * | 3、$sql 查詢資料庫demo中的資料表angularjsFile
 * | 4、$mysqli_result 執行查詢語句query返回陣列型別(SELECT返回的是陣列型別)
 * | 5、$outp 建立空物件,儲存$mysqli_result中的記錄
 * | 6、迴圈取出的記錄資料,第一次執行$outp如過不為空則在物件的後面加上一個“,”。
 * | 注意:第一次程式執行的時候$outp肯定是空的,當第一次程式執行完畢後$outp就不會在為空,
 * | 這時候$outp中就有了一條記錄。
 * + -----------------------------------------------------------
 * | php中的“.”是字串連線的意思。
 * + -----------------------------------------------------------
 * | $outp = '{"records":['.$outp.']}';生成json格式的物件。
 * + -----------------------------------------------------------
 * | $mysqli->close();關閉資料庫連線
 * + -----------------------------------------------------------
 * | echo($outp); 打印出資料。
 * + -----------------------------------------------------------
 * | 後臺返回的json其實是一個物件,裡面包含的是鍵值對,在鍵的名稱自己定義,值為陣列,
 * | 在陣列中又包含的是物件。
 * | 注意一定要很瞭解josn的資料格式,陣列中包含的物件其實就是從資料庫中讀取的值。
 * + -----------------------------------------------------------
 */
// 連線資料庫
$mysqli = new mysqli("localhost","使用者名稱t","密碼","demo");
// 判斷連線是否成功
if ($mysqli->connect_error>0){
    echo "連線失敗";
}
// 如果資料庫連線成功則進行SQL語句的查詢語句SELECT,查詢angularfile
$sql = "SELECT * FROM angularfile";
$mysqli_result = $mysqli->query($sql);

// 建立backResult空物件
$backResult = "";
// 執行while迴圈語句,迴圈資料庫查詢的結果集,並使用fetch_array()取出每條記錄.
while ($row = $mysqli_result->fetch_array(MYSQL_ASSOC)){    
    // 判斷$backResult是否為不為空,如果不為空則在值後面加上",".
    if ($backResult != ""){
        $backResult .= ",";
    };    
    // 使用字串拼接的方式為$$backResult變數建立物件,著個物件中儲存的是資料庫angularfile表中的每條記錄.
    $backResult .= '{"Name":"' . $row["Name"] . '",';
    $backResult .= '"City":"' . $row["City"] . '",';
    $backResult .= '"Job":"' . $row["Job"] . '"}';
}
// 拼接返回的json物件,物件中鍵的名稱為myfile,物件的值為陣列.
$backResult = '[' .$backResult .']';
// 關閉資料庫連線
$mysqli->close();
// 列印返回給前臺的json資料.
echo $backResult;
?>
HTML部分:
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<title>ajax調取例項</title>
<script src="./js/newajax.js"></script>
<style type="text/css">
#oUl{
    border:1px solid #f1f1f1;
    width:300px;
    display: none;
    list-style-type:none;
    vertical-align:0;
    padding:0;
    font-size: 14px;      
}
#oUl li{
    height: 40px;
    line-height: 40px;
    text-align: center;
}
#oUl li:nth-child(odd) {
      background-color: #f1f1f1;
    }
    table tr:nth-child(even) {
      background-color: #ffffff;
    }
</style>
</head>

<body>
<button id="btn">點選</button>
<ul id="oUl"></ul>

<script type="text/javascript">
window.onload = function(){
  function myFunc(clickBtn,getData){
    var oBtn = document.getElementById(clickBtn);
    var oUl = document.getElementById(getData);
    oBtn.onclick = function(){
      oUl.style.display = 'block';
      ajax('angularFile2.php',function(sucInfo){
        var arr = eval(sucInfo);
        //eval()方法是把一個語句內容解析成一個js可以識別的方法。 
        console.log(arr);
        
        for (var i = 0, len = arr.length; i < len; i++) {
          var oLi = document.createElement("li"); //建立一個li標籤
          oLi.innerHTML = 'Name' + arr[i].Name + '&nbsp;&nbsp;' + 'City' + arr[i].City + '&nbsp;&nbsp;' + 'Job' + arr[i].Job;
          oUl.appendChild(oLi);   //將li標籤放在ul中
        }
      },function(sucInfo){
        alert("請求失敗");
      });
    }
  }
  myFunc("btn","oUl");
}
</script>
</body>
</html>
封裝的newajax.js檔案
/*
* + -------------------------------------------------------------------------------------------
* | 函式說明:
* + -------------------------------------------------------------------------------------------
* | ajax 函式名稱,可以取任意名稱。在ajax這個函式中傳遞三個引數
* + -------------------------------------------------------------------------------------------
* | url (需要請求的url)
* + -------------------------------------------------------------------------------------------
* | funSucc (當請求成功時需要執行的DOM操作)
* + -------------------------------------------------------------------------------------------
* | funFail (當請求失敗的時候需要執行的DOM操作)
* + -------------------------------------------------------------------------------------------
* | open方法 (接收三個必填引數,1.請求方法GET/POST,2.請求頁面的url,3.是否執行非同步互動)
* + -------------------------------------------------------------------------------------------
* | send方法 (向伺服器發出請求,如果採用的是非同步方式,該方法會立即返回)
* + -------------------------------------------------------------------------------------------
* | readyState屬性 (判斷此時瀏覽器與伺服器的狀態,值為4時表示完成,即響應資料接收完成)
* + -------------------------------------------------------------------------------------------
* | status屬性 (伺服器返回的狀態,值為200表示成功)
* + -------------------------------------------------------------------------------------------
* | 如果XMLHttpRequest的狀態為4且伺服器返回的狀態碼為200的情況下則讀取伺服器返回的文字資訊
* + -------------------------------------------------------------------------------------------
* | 否則彈出錯誤提示
* + -------------------------------------------------------------------------------------------
*/
function ajax(url,funSucc,funFail){
	var xmlhttp;
	// 1.建立AJAX物件
	if (window.XMLHttpRequest) {
		// 所有現代主流瀏覽器基本都支援包括IE7+
		xmlhttp = new XMLHttpRequest();
	}else{
		// 主要相容IE5、IE6
		xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
	}

	// 2.連線伺服器
	// open(方法,url,非同步互動)
	xmlhttp.open("POST", url, true);
	
	xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");

	// 3.傳送請求
	xmlhttp.send();

	// 4.接收返回的資料
	xmlhttp.onreadystatechange=function ()
	{
		//oAjax.readyState	//瀏覽器和伺服器,進行到哪一步了
		if(xmlhttp.readyState==4)	//讀取完成
		{
			if(xmlhttp.status==200)	//成功
			{
				funSucc(xmlhttp.responseText);
			}
			else
			{
				funFail(xmlhttp.status);
			}
		}
	};
};
執行上面程式碼結果如下圖:

注意:將檔案放在伺服器中執行,否則如果用谷歌瀏覽器執行會報跨域錯誤,上面是用原生ajax來呼叫後臺資料庫資料,我們之前寫過angularjs呼叫後臺資料angularjs $http服務--XMLHTTPRequest && SQL
其實在寫這兩個例項的時候我發現我們在寫後臺返回給前端的json資料的格式是有所不同。

使用angularjs調取時:
angularjs中$http服務接收的資料需要是一個物件,基本格式是物件裡面包含陣列,陣列中又包含著若干的物件。
使用ajax調取時:
在使用ajax調取的時候前端接收到的是一個數組物件,陣列中包含著若干的物件。
如有理解不當之處,歡迎各位老鐵留言指正。謝謝!!!!

相關推薦

ajax調取php,mysql後臺資料例項

前面總結有關angularjs調取php後臺的例項,今天分享一個使用原生ajax調取mysql資料庫資料的例項。 mysql資料庫表資料部分: mysql資料庫表設計部分: PHP程式碼:<

PHP+Mysql 實現資料分頁顯示

獲取結果集中的記錄數可以在SELECT語句中使用COUNT()函式獲取結果集中的記錄數量 設定每頁顯示記錄的數量假定使用變數$PageSize來儲存每頁顯示記錄的數量,它的值由 使用者根據需要自行設定

html資料動態顯示、利用ajax動態顯示mysql資料

前段時間做個關於資料採集的課設,內容是把溫溼度採集儲存到mysql裡,再用網頁顯示出來。然而網頁的動態顯示卡了好久(溫溼度一直更新,靜態html不能一直重新整理),多次請教最後還是解決了,方法就是利用ajax來實現。 準備工作 環境:php環境、jque

ajax xmlhttprequest非同步獲取後臺資料(二)

前臺程式碼: <%@ Page Title="主頁" Language="C#"  AutoEventWireup="true"     CodeBehind="Default.aspx.cs" Inherits="ajax測試二._Default" %> &l

Ajax 非同步或取後臺資料json顯示到頁面

        今天心情很好,終於寫出來了用Ajax非同步獲取資料,不重新整理頁面。         後臺方法:         @RequestMapping("/uspaces.html" )public void getUserSpace(HttpServletReq

ajax之前臺和後臺資料傳輸

Spring中ajax資料傳輸 由於專案需要用ajax提交資料,而不是form提交資料。因此我需要學習ajax,這也是我在開發小組做的最後一個東西,儘管由於暑假要去東軟實訓,這個ajax提交也沒有做完

vue入門:用axios跨域連線PHP+MySQL後臺

一步步踏著坑過來 要點總結 搭建PHP+MySQL+apache,生成伺服器,生成簡單資料庫表 寫後臺PHP檔案,供給前端引用介面(返回一個數組) 搭建vue專案,安裝在專案中安裝axios外掛 寫vue前端程式碼,引用後端介面,顯示資料庫

利用js將ajax獲取到的後臺資料動態載入至網頁中

動態生成二級選單樹: <script>jQuery(function($) {/**********獲取未處理報警資訊總數**************/var result;$.ajax({async:false,cache:false,url: "alarm_

php+mysql+ajax實現淘寶客服或阿裏旺旺聊天功能 之 後臺頁面

聯系人 http esc hold 聊天內容 12px onclick onf pda 在上一篇隨筆中,我們已經看了如何實現前臺的對話功能;前臺我限定了店主只有一人,店鋪只有一個,所有比較單一,但後臺就不一樣了,而後臺更像是我們常見的聊天軟件;當然,前臺也應該實現這種效果,

phpmysql查詢當天,查詢本週,查詢本月的資料例項(欄位是時間戳)

mysql查詢當天,查詢本週,查詢本月的資料例項(欄位是時間戳) //其中 video 是表名; //createtime 是欄位; // //資料庫time欄位為時間戳 // //查詢當天: $start = date('Y-m-d 00:00:00'); $end = date('Y-m-d

mui 之ajax遇到的坑 後臺接受資料為空 後端服務為php

mui.ajax的官方模板為             mui.ajax(Host+'/app/index/newsinfo',{                 data:{id:newsId},                 dataType:'json',//伺服器返回

前端 後臺php MySQL資料庫之間通過Ajax技術的完整連線與互動 Ajax的應用

PHP - AJAX 與 MySQLAJAX 可用來與資料庫進行互動式通訊。AJAX 資料庫例項下面的例項將演示網頁如何通過 AJAX 從資料庫讀取資訊:本教程使用到的 Websites 表 SQL 檔案:websites.sql。例項 選擇一個網站: Google 淘寶 菜

使用ajax 進行post提交json資料後臺php,但是後臺php收不到資料

當 contentType 為 application/x-www-form-urlencoded 時(預設值)才能用 $_POST 得到傳入的資料。但是使用application/json;chars

PHP+MySQL+Ajax實現前端頁面展示資料庫的資料

昨天發現一款資料庫管理軟體:Navicat for MySQL,一款強大的 MySQL 資料庫管理和開發工具,這款軟體使用了極好的圖形使用者介面(GUI),可以用一種安全和更為容易的方式快速和容易地新建資料庫、新建表等。前端學習過程中一直對後臺如何從資料庫

如何從資料庫調出資料顯示到頁面 PHP+Mysql+Html(簡單例項

首先顯示一下資料庫的資料 頁面資訊 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> &l

ECharts, PHP, MySQL, Ajax, JQuery 實現前後端資料視覺化

最近要將後臺資料庫上的一些資料以視覺化的方法顯示到前端,找來找去,發現百度開發的這套圖表工具庫還不錯,網上搜索了一下相關的教程,也算是實現了較為簡單的demo。於是寫下來,記錄一下。 ECharts ECharts是國人開發的一套前端的圖表工具

PHP+Ajax點選載入更多列表資料例項

一款簡單實用的PHP+Ajax點選載入更多列表資料例項,實現原理:通過“更多”按鈕向服務端傳送Ajax請求,PHP根據分頁引數查詢

再學ajax--第二天 | 基於php+mysql+ajax的表單註冊、登錄、註銷

常量 insert 寫在前面 break 證明 收獲 localhost 技能 tex 寫在前面   ajax學習到了第二天,這次是用第一天封裝的ajax函數,後端使用了php+mysql實現基本的註冊,登錄,註銷。   php是我前幾個月get到的技能,我已經學習到了

php+mysql+ajax實現淘寶客服或阿裏旺旺聊天功能 之 前臺頁面

group -a com 現在 中間 數據 bottom margin -m 首先來看一下我已經實現的效果圖: 消費者頁面:(本篇隨筆) (1)會顯示店主的頭像 (2)當前用戶發送信息顯示在右側,接受的信息,顯示在左側 店主或客服頁面:(下一篇隨筆) (1)在左側有一個列

php mysql jquery ajax 查詢數據庫三級聯動

message name new 獲取 errno app get comment dem 1、php 頁面打開直接展示第一個select option中的數據 2、當第一個下拉列表選中的內容發生改變的時候,查詢數據庫填充第二個下拉列表 3、當第二個下拉列表選中的內容發