整合營銷服務商

          電腦端+手機端+微信端=數據同步管理

          免費咨詢熱線:

          AJAX基本教程(六)數據庫操作

          AJAX基本教程(六)數據庫操作

          了清楚地說明使用AJAX從數據庫訪問信息的難易程度,我們將動態構建MySQL查詢并將結果顯示在“ ajax.html”上。但是在繼續之前,讓我們做基礎工作。使用以下命令創建表。

          –我們假設您具有足夠的特權來執行以下MySQL操作。

          CREATE TABLE 'ajax_example' (
             'name' varchar(50) NOT NULL,
             'age' int(11) NOT NULL,
             'sex' varchar(1) NOT NULL,
             'wpm' int(11) NOT NULL,
             PRIMARY KEY  ('name')
          ) 
          

          現在,使用以下SQL語句將以下數據轉儲到該表中:

          INSERT INTO 'ajax_example' VALUES ('Jerry', 120, 'm', 20);
          INSERT INTO 'ajax_example' VALUES ('Regis', 75, 'm', 44);
          INSERT INTO 'ajax_example' VALUES ('Frank', 45, 'm', 87);
          INSERT INTO 'ajax_example' VALUES ('Jill', 22, 'f', 72);
          INSERT INTO 'ajax_example' VALUES ('Tracy', 27, 'f', 0);
          INSERT INTO 'ajax_example' VALUES ('Julie', 35, 'f', 90);
          

          客戶端HTML文件

          現在讓我們擁有客戶端HTML文件ajax.html,它將具有以下代碼-

          <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;
                            }
                         }
                      }
                      
                      // Create a function that will receive data
                      // sent from the server and will update
                      // div section in the same page.
                      ajaxRequest.onreadystatechange=function() {
                      
                         if(ajaxRequest.readyState==4) {
                            var ajaxDisplay=document.getElementById('ajaxDiv');
                            ajaxDisplay.innerHTML=ajaxRequest.responseText;
                         }
                      }
                      
                      // Now get the value from user and pass it to
                      // server script.
                      var age=document.getElementById('age').value;
                      var wpm=document.getElementById('wpm').value;
                      var sex=document.getElementById('sex').value;
                      var queryString="?age=" + age ;
                      
                      queryString +="&wpm=" + wpm + "&sex=" + sex;
                      ajaxRequest.open("GET", "ajax-example.php" + queryString, true);
                      ajaxRequest.send(null); 
                   }
                   //-->
                </script>
          
                <form name='myForm'>
                   Max Age: <input type='text' id='age' /> <br />
                   Max WPM: <input type='text' id='wpm' /> <br />
                   Sex: 
                   
                   <select id='sex'>
                      <option value="m">m</option>
                      <option value="f">f</option>
                   </select>
                   
                   <input type='button' onclick='ajaxFunction()' value='Query MySQL'/>
                </form>
                
                <div id='ajaxDiv'>Your result will display here</div>
             </body>
          </html>

          –在查詢中傳遞變量的方式符合HTTP標準,并具有formA。

          URL?variable1=value1;&variable2=value2;

          上面的代碼將為您提供如下屏幕-

          最高年齡:

          最高WPM:

          性別: 米 F

          輸入后,結果將顯示在此部分中。

          注意 -這是一個虛擬屏幕。

          服務器端PHP文件

          您的客戶端腳本已準備就緒。現在,我們必須編寫服務器端腳本,該腳本將從數據庫中獲取年齡,wpm和性別,并將其發送回客戶端。將以下代碼放入文件“ ajax-example.php”中。

          <?php
          $dbhost="localhost";
          $dbuser="dbusername";
          $dbpass="dbpassword";
          $dbname="dbname";
          	
          //Connect to MySQL Server
          mysql_connect($dbhost, $dbuser, $dbpass);
          	
          //Select Database
          mysql_select_db($dbname) or die(mysql_error());
          	
          // Retrieve data from Query String
          $age=$_GET['age'];
          $sex=$_GET['sex'];
          $wpm=$_GET['wpm'];
          	
          // Escape User Input to help prevent SQL Injection
          $age=mysql_real_escape_string($age);
          $sex=mysql_real_escape_string($sex);
          $wpm=mysql_real_escape_string($wpm);
          	
          //build query
          $query="SELECT * FROM ajax_example WHERE sex='$sex'";
          
          if(is_numeric($age))
             $query .=" AND age <=$age";
          
          if(is_numeric($wpm))
             $query .=" AND wpm <=$wpm";
          	
          //Execute query
          $qry_result=mysql_query($query) or die(mysql_error());
          
          //Build Result String
          $display_string="<table>";
          $display_string .="<tr>";
          $display_string .="<th>Name</th>";
          $display_string .="<th>Age</th>";
          $display_string .="<th>Sex</th>";
          $display_string .="<th>WPM</th>";
          $display_string .="</tr>";
          
          // Insert a new row in the table for each person returned
          while($row=mysql_fetch_array($qry_result)) {
             $display_string .="<tr>";
             $display_string .="<td>$row[name]</td>";
             $display_string .="<td>$row[age]</td>";
             $display_string .="<td>$row[sex]</td>";
             $display_string .="<td>$row[wpm]</td>";
             $display_string .="</tr>";
          }
          
          echo "Query: " . $query . "<br />";
          $display_string .="</table>";
          
          echo $display_string;
          ?>

          現在嘗試在“ 最大年齡”或任何其他框中輸入有效值(例如120),然后單擊“查詢MySQL”按鈕。

          最高年齡:

          最高WPM:

          性別: 米 F

          輸入后,結果將顯示在此部分中。

          如果您已成功完成本課程,那么您將知道如何結合使用MySQL,PHP,HTML和Javascript編寫AJAX應用程序。

          JAX上傳的用戶體驗更好,HTML上傳用戶使用更方便一點,直接在網頁里面就能夠操作了。示例在下面提供了,是完整的源代碼,有教程,有視頻教程,基本上使用非常簡單,開發也非常簡單,有技術支持,

          網上搜了一下,基本上講這塊的文章還是很多,但是就是一個字亂,講的很混亂。也沒有提供完整的前后端示例。

          用戶上傳的文件比較大,有20G左右,直接用HTML傳的話容易失敗,服務器也容易出錯,需要分片,分塊,分割上傳。也就是將一個大的文件分成若干個小文件塊來上傳,另外就是需要實現秒傳功能和防重復功能,秒傳就是用戶如果上傳過這個文件,那么直接在數據庫中查找記錄就行了,不用再上傳一次,節省時間,實現的思路是對文件做MD5計算,將MD5值保存到數據庫,算法可以用MD5,或者CRC,或者SHA1,這個隨便哪個算法都行。

          分片還需要支持斷點續傳,現在HTML5雖然提供了信息記錄功能,但是只支持到了會話級,也就是用戶不能關閉瀏覽器,也不能清空緩存。但是有的政府單位上傳大文件,傳了一半下班了,明天繼續傳,電腦一關結果進度信息就丟失了,這個是他們的一個痛點。

          切片的話還有一點就是在服務器上合并,一個文件的所有分片數據上傳完后需要在服務器端進行合并操作。


          1.下載示例

          https://gitee.com/xproer/up6-vue-cli



          將up6組件復制到項目中

          示例中已經包含此目錄



          1.引入up6組件



          2.配置接口地址

          接口地址分別對應:文件初始化,文件數據上傳,文件進度,文件上傳完畢,文件刪除,文件夾初始化,文件夾刪除,文件列表

          參考:http://www.ncmem.com/doc/view.aspx?id=e1f49f3e1d4742e19135e00bd41fa3de



          3.處理事件



          啟動測試



          啟動成功



          效果



          數據庫

          、ajax介紹

          ajax 是前后端交互的重要手段或橋梁。它不是一個技術,是一組技術的組合。

          ajax :a:異步;j:js;a:和;x:服務端的數據。

          ajax的組成:

          • 異步的 js 事件
          • 其他 js (處理解析數據)
          • XMLHttpRequest 對象
          • 數據(txt、json、xml、html)

          通過后臺與服務器進行少量數據交換,ajax可以使網頁實現異步更新。也就是在不需要重新加載整個網頁的情況下,能夠更新部分網頁的技術。傳統的網頁不使用ajax,如果需要更新內容,必須重新加載整個頁面。

          ajax請求原理:創建一個網絡請求對象 -> 發送連接請求 -> 發送請求數據 -> 檢查網絡請求對象的狀態 -> 如果響應成功了 -> 瀏覽器接收返回數據并更新網頁。接下來詳細介紹對象的創建以及它的方法。

          二、創建 XMLHttpRequest 對象

          XMLHttpRequest 對象,用于后臺與服務器之間的數據交換,意味著可以在不加載整個網頁的情況下,更新部分內容或數據。現代瀏覽器基本都支持,但是低版本的IE不支持,如果我們考慮IE兼容問題創建對象的時候需要兼容創建。

          考慮兼容時創建的對象:

          var xhr ;
          if( window.XMLHttpRequest ){ //檢查瀏覽器是否支持XMLHttpRequest
           xhr=new XMLHttpRequest()
          }else{
           xhr=new ActiveXObject("Microsoft.XMLHTTP") //兼容IE6  IE5
          }

          三、XMLHttpRequest的方法

          3.1、open( )

          設置請求的類型、請求接口、是否異步處理。

          使用語法:open( method , url , async )

          • method:設置網絡請求的類型,常用的 get 和 post
          • url:設置請求的接口也就是服務器的地址
          • async:true時表示異步,false表示同步

          3.2、send( )

          將請求發送到服務器。

          使用語法:send( string )

          • string,只用在請求方式是post時,發送給服務器的數據。數據是鍵值對格式的,如:"name=jack&pwd=1234"

          使用發送方式不同的時候,傳輸數據添加方式也不同,所以我們介紹下分別為post和get時,數據是如何發送的?

          3.3、提交方式

          • 使用 get 方式提交

          get發送請求時,需要傳給后臺的數據通過url來傳遞,多個參數之間使用 & 符號連接,使用時如下:

          xhr.opn( "GET" , "1.php?name=hello&age=world" , true )
          xhr.send()
          • 使用 post 方式提交

          使用 post 方式發送請求時,使用send來發送數據,有時需要設置數據格式,類似表單那樣,此時可通過 setRequestHeader 設置發送的數據格式

          xhr.setRequestHeader( "Content-type", "application/x-www-form-urlencoded")

          Content-type常見類型:

          • text/plain 純文本,基本不怎么用
          • application/x-www-form-urlcoded 鍵值對格式傳值,多個參數使用&連接
          • multipart/form-data 定界符,分隔各個數據,經常用于上傳文件

          四、readyState 屬性

          readyState 存有 XMLHttpRequest 的狀態,它的值從 0-4 發生變化,分別代表的意義:

          • 0:請求初始化,對象剛剛創建
          • 1:服務器已連接
          • 2:已發送,send發放已調用
          • 3:已接收,此時只接收了響應(response)頭部分
          • 4:已接收,此時接收響應(response)體信息

          每當 readyState 狀態值發生改變時會,就會觸發 onreadystatechange 事件,對應著每個狀態值就會被觸發五次。當狀態值為 4 時表示網絡請求響應完畢,就可以獲取返回的值。

          xhr.onreadystateChange=function(){
           if( xhr.readyState==4 ){
            if( xhr.status>=200 && xhr.status<300 || xhr.status==304 ){
             console.log("請求成功",xhr.responseXML)
            }else{
             console.log("請求失敗")
            }
           }
          }

          五、響應信息

          通常我們需要獲取服務器返回的信息,然后對我們的網頁做相對應的結果展示,通常使用 XMLHttpRequest 的 responseText 或 responseXML 屬性。

          responseText ---> 獲取到的是字符串形式。接收到可直接使用,無需轉換。

          document.getElementById("myDiv").innerHTML=xmlhttp.responseText;

          responseXML ---> 獲取到 XML 形式的數據。使用時需要解析,如:

          <person>
           <name>小米粒</name>
           <age>18</age> 
          </person> 
          解析時:
          document.getElementsByTagName("name")[0]

          responseXML 目前已被 json 取代,所以作為了解就好。

          六、ajax實例

          var xhr ;
          if( window.XMLHttpRequest ){
           xhr=new XMLHttpRequest()
          }else{
           xhr=new ActiveXObject("Microsoft.XMLHTTP") //兼容IE6  IE5
          }
          xhr.open('GET','1.txt',true)
          xhr.send()
          xhr.onreadystatechange=function(){
           if(xhr.readyState==4){
            if(xhr.status>=200 && xhr.status<300 || xhr.status==304){
             console.log("請求成功",xhr.response) // 請求成功 abc
            }else{
             console.log("請求失敗")
            }
           }
          }

          1.txt 文檔內容為 abc。所以返回的結果也是abc


          主站蜘蛛池模板: 99热门精品一区二区三区无码| 麻豆视传媒一区二区三区| 尤物精品视频一区二区三区| 精品无码中出一区二区| 99精品国产一区二区三区不卡| 国产精品无码一区二区三区在 | 日本v片免费一区二区三区 | 精品国产日产一区二区三区| 国产精品久久久久久一区二区三区 | 免费一区二区无码东京热| 成人免费视频一区| 老熟女高潮一区二区三区| 黑人大战亚洲人精品一区| 视频一区二区在线播放| 激情无码亚洲一区二区三区| 91久久精品无码一区二区毛片| 丝袜无码一区二区三区| 一区二区三区四区在线播放| 亚洲愉拍一区二区三区| 亚洲国产成人久久综合一区 | 国偷自产av一区二区三区| 美女视频一区二区| 精品国产亚洲第一区二区三区| 亚洲国产高清在线精品一区| 久久99精品波多结衣一区| 日韩AV无码一区二区三区不卡毛片| 国产精品无码一区二区三区在| 亚洲.国产.欧美一区二区三区| 亚洲AV无码一区二区三区人 | 亚洲AV无码一区东京热| 国产裸体歌舞一区二区 | 国产成人精品一区二区三区免费| 精品人妻少妇一区二区三区在线| 日韩精品无码人妻一区二区三区| 理论亚洲区美一区二区三区 | 亚洲AV福利天堂一区二区三| 99久久国产精品免费一区二区| 日本大香伊一区二区三区| 亚洲日韩精品一区二区三区| 久久久久99人妻一区二区三区| 久久se精品一区二区国产|