計算機, 程序設計
阿賈克斯 - 例子。 阿賈克斯腳本
互聯網提供訪問者是在網絡中承載的每個資源的知名度和瀏覽器 - 通過網絡協議,單個腳本呼叫機制,發送/接收的信息訪問。 一套彌補網站頁面,有一個共同的根源 - 一個獨特的鏈接(域名,唯一的節點地址)。
無論資源響應靜態或動態訪問產生的響應。 即使形式和頁的內容依賴於任何條件下,通信服務器的不可分割的單位和客戶端(瀏覽器)是完成HTML編碼的文件,圖片,樣式表,和其他必要的文件內容和環境。 如果事情是錯誤的,瀏覽器顯示所有被“託管”來獲得解析和執行。
許多有前景的技術已經出現了很長時間,但都被不公正遺忘或沒有得到妥善使用。 首先AJAX(示例使用XMLHttpRequest對象)出現了許多年前,但成功和成名來得很晚。
全部或你所需要的
在經典版本的網站 - 名稱,IP地址和鏈接(所有同義詞指定在互聯網空間的同一點)。 什麼謊言這個主頁的背後 - 想:自己主動現代化的“設計師”,它甚至沒有問為什麼會這樣? 為什麼該網站的主要頁面,從中可以得到任何其他? 此選項-顯然不是 理想的,它 的具體內容和實際功能。
簡單地說,如果一個人需要一個牙醫,它是為特定目的正確的地址,而不是到廚房進行手術,而不是進行諮詢治療專家庫。 在這個地方一個橫空出世的地方,他看到,但在完全沒有接受牙科診所。 註冊表和方向(確切路徑)的醫生 - 可以期待訪問者最好的。 並當場(抵達)可以作為醫師,和目的地變化。
但這裡的網站通常總是加載全部彈藥,沒有什麼根據負載的變化,考慮到有人到來時......但即使在它是一個現實生活中的診所,你訪問一個新的客戶端,以提供足夠的信息頁中的第一時間的情況下,聯繫人和...可以提供註冊表是該網站在訪問期間下班時間做,由醫生規定不可用,臨時任命是在不同的辦公室做...
點在互聯網空間
響應發出站點頁面(通常在家),然後其他,在遊客的要求,提出一個請求 - 在互聯網空間的資源的經典響應。 網站服務器也包含圖片,樣式,JavaScript代碼的腳本,PHP等,並不是所有的PHP文件做網頁,他們中的一些可以以AJAX請求:.響應接收,處理和發送信息。
寫一個腳本易如反掌。 但要在網絡空間控制的角度來看,這是不可能的,以確定誰和解決什麼原因,被激活的名稱,IP地址和鏈接。 網絡上的任何動作發生在軟件的地方,主要是通過瀏覽器,還可以通過不同的出發地和目的地的通過行動的其他網站的機器人。
腳本,增益控制,不僅可以準確地知道:通過遊客來到何種瀏覽器的訪問,與參考從IP-地址和cookie的存在。 只有後者可以提供信息,以形成主網頁,但只有當訪問者已經來過這裡。 在所有其他情況下,可以生成只能從服務器一般的反應。 AJAX的例子,很容易在互聯網上找到,應謹慎使用。 在XMLHttpRequest對象的(使用)跟踪誤差是不容易的。
整體響應和私營部門的對話
來自服務器的整體響應 - 一個共同的頁面,被稱為的所謂的指數本金,並與一個網站,是在其鏈接到其它可用的頁面賠率開始。 然而,如果訪問者知道其他頁面的名字,他們是在他的理解將是不超過一個開發商指定不那麼重要了。 這裡是經典機型,全部一次:整體設計和功能,重點是所有遊客。
私營部門的對話 - 一個訪問者的上次會議的延續。 該網站已經知道他做了什麼,他感興趣的是什麼瀏覽過的頁面,並把它在他的記憶,寫下了瀏覽器的cookies的東西。
它使用兩個基本請求到服務器,下載網站,並與他一起工作:POST和GET。 查詢結果是一整頁。 在結果頁面,訪問者可以激活那些在特定網頁元素的操作配置這些或其他事件。
活動頁面元素
頁面元素可以是鍵查找信息,意思 - 把一個文本字段的內容,並發現它寫了一個客人。 該事件可以在菜單項,圖片,文本框出現。 在任何情況下,JavaScript的功能將被運行,這可以如下進行AJAX的請求:
InitXML('../ Mphp / scSrvPhpWord.php?CTask = GoPage'+'&cOwnerCode ='+ cOwnerCode
+'&CSessionCode ='+ cSessionCode +'&cActiveItem ='+ cActiveItem);
因此InitXML()函數定義如下(變量var scXHR功能以外進行說明):
功能InitXML(scURL){
scXHR = NULL;
如果(window.XMLHttpRequest)
{嘗試
{ScXHR =新的XMLHttpRequest();
}趕上(E){}
}其他
如果(window.ActiveXObject)
{嘗試
{ScXHR =新的ActiveXObject('MSXML2.XMLHTTP');
}趕上(e)中
{嘗試
{ScXHR =新的ActiveXObject('Microsoft.XMLHTTP');
}趕上(E){}
}
}
如果(scXHR)
{
scXHR.open(“GET”,scURL);
scXHR.onreadystatechange = WaitReplySC;
scXHR.send(NULL);
};
}
該函數接受一個URL,並啟動了它的請求。 異步答案會很快到來,這將履行其在URL指定的腳本(在這種情況下 - scSrvPhpWord.php,位於文件夾相對於網站的根../Mphp/),並將開始WaitReplySC()函數,該函數將顯示在服務器XML響應的輸入,包括標題和內容。
服務器響應
其實服務器是一個PHP腳本 - 與安裝的必要條件開始,下載必要的設施,前處理,這取決於開發目的的程序:
命名空間PhpOffice \ PhpWord;
函數ini_set('的display_errors',1);
使用error_reporting(E_ALL ^ E_NOTICE);
ignore_user_abort(真);
參數或者set_time_limit(12);
使用PhpOffice \ PhpWord \ MphpObj \ scDocuments;
require_once'PhpOffice / PhpWord / Autoloader.php';
\ PhpOffice \ PhpWord \自動裝載機::寄存器();
12秒 - 代表指示任何錯誤標記的開始,當用戶註銷,並設置上執行的情況下循環時間限制禁止停車的腳本。 接下來鏈接庫PhpOffice \ PhpWord的文檔* .DOCX。
如上AJAX的挑戰所示('... cTask = GoPage'+'&cOwnerCode ='+ cOwnerCode +'&cSessionCode ='+ cSessionCode +'&cActiveItem ='+ cActiveItem) - 四GET-變量,這可能不應檢查自己的實際可用性:
$ CTask =(isset($ _ GET ['cTask']))? $ _GET ['cTask']:'';
$ COwnerCode =(isset($ _ GET ['cOwnerCode']))? $ _GET ['cOwnerCode']:'';
$ CSessionCode =(isset($ _ GET ['cSessionCode']))? $ _GET ['cSessionCode']:'';
$ CActiveItem =(isset($ _ GET ['cActiveItem']))? $ _GET ['cActiveItem']:'';
執行後,預備動作腳本決定:
開關($ cTask){
案“GoPage'://(這是最初的下載過程中的挑戰或刷新頁面)
$ COwnerCode ='cOwner';
$ CSessionCode ='cSession';
$ CContents ='cContents';
$ CStatus ='cStatus';
$了CHtml =的iconv('UTF-8','CP1251“,”編碼元件“);
$ CActiveItem =的iconv('UTF-8','CP1251“,”變量');
$ CReply =“scSrvRM | GoPage |集合| {$ cOwnerCode}`{$ cSessionCode} | {$ cContents}`{$ cStatus} | {$ CHTML} | {$ cActiveItem}”;
打破;
}
和腳本的最後一部分:
標題(“內容類型:文本/ XML;接收字符集= UTF-8”);
標題(“緩存控制:無緩存”);
迴聲'
$ CReply =的iconv('CP1251','UTF-8',$ cReply); //從“CP1251”在'UTF-8'轉換
迴聲$ cReply;
獲取客戶響應
對在瀏覽器加載頁面,發現只要服務器將準備響應,它會被處理功能WaitReplySC:
起作用WaitReplySC(){
嘗試{
如果(scXHR.readyState == 4){
如果(scXHR.status == 200){//響應處理
VAR TestReply = scXHR.responseText;
如果((TestReply.indexOf(“解析錯誤”)> 0)||
(TestReply.indexOf(“通知”)> 0))警報(scXHR.responseText);
VAR = CDATA scXHR.responseText;
VAR = ADATA cData.split('|');
VAR = CCMD ADATA [1];
VAR = CPOS ADATA [2];
VAR aOwnerSession = ADATA [3] .split('`');
cOwnerCode = aOwnerSession [0];
VAR cSessionCode = aOwnerSession [1];
VAR aContentStatus = ADATA [4] .split('`');
VAR cContent = aContentStatus [0];
VAR cStatus = aContentStatus [1];
VAR的cHTML = ADATA [5]; //服務器的HTML響應
VAR cVarValues = ADATA [6]; //表單變量
開關(CCMD){
案“GoPage”:
VAR dTestLine =的document.getElementById('scTestLine');
dTestLine.innerHTML ='回复= ['+ cOwnerCode +','
+ CSessionCode +','
+ CContent +','
+ CStatus +','
+ CHTML +','
+ CVarValues +']';
打破;
}
}其他{
。的document.getElementById('scAreaStatus')的innerHTML =“錯誤!!!”;
}
}
}趕上(E){}
}
因此,使用AJAX的實施例中,頁是在瀏覽器加載獲得(在scTestLine元素):
回复= [cOwner,cSession,cContents,cStatus,元件編碼變量值]
在代碼中,jQuery和WordPress的代表性
頁面在瀏覽器和使用UTF-8的腳本文本,使用的iconv()函數來俄語字符轉換。 由代碼所表示的骨架的其餘部分是非常簡單的並且可以容易地重複任何特定用途。
隨時發生變化僅在處理服務器響應WaitReplySC()函數和產生響應的實際腳本代碼。 調用InitXML功能(用於特定scURL和相關數據到它)被放置在事件處理程序的頁面元素和限定這些元素的含義。
呈現例子AJAX為導向,以“手工”技術的運用。
在不同的內容管理系統(SMS)功能,以不同的方式描述的,作為一項規則,在特定特異性的風格。 例如,jQuery的AJAX調用可能性實現jQuery.ajax()在任何一個更高級別的功能:jQuery.get()和jQuery.post()。 該參數被發送的URL和設置(SET鍵+值對)。 jQuery.ajax()返回的XMLHttpRequest對象。
jQuery來追踪所提出的功能,方法的結果:XHR.done() - 請求成功完成。 XHR.fail() - 錯誤處理。
jqXHR.done()方法yavlyatsya替代處理程序AJAX的請求的成功完成。 替換過時jqXHR.success()方法。
同樣,使用的WordPress的AJAX技術。 在這裡,一切都已經在內容管理系統植入本身,你只需要使用所提出的結構。 這些文件提供了詳細的描述。
AJAX應用基本上取決於所選擇的工具,雖然手動版本可以並行地或除了所選擇的內容管理系統,一個或jQuery的另一版本中使用。 後者是對自己的工作,因為幾乎所有的現代SMS使用它有用,但每個以自己的方式。
應用的一個典型的例子
簡單和指數使用AJAX的 - 車的網上商店。 商店頁面總是裝滿貨物,但在現實中,他們可能不是。 重裝通常需要相當長的時間,但是當訪問者選擇一個產品,他永遠可以放棄他或更改所選的一個,該網站總是希望快速顯示。
通常它是在圍繞所選項目籃子和標記的形式實現。 如果不使用AJAX的動態變化,以這些元素是有問題的。
實現機制添加/刪除項目到您的購物車AJAX的腳本,在許多SMS成為事實上的。
對於可以以傳統的方式形成通過AJAX形式正常的數據傳輸(用於輸入用戶名和密碼):
<表名='fWelcome'行動='的index.php'方法=“POST”>
FORM>
這裡的處理程序:
起作用scfWelcomeGo(){
VAR = CNAME document.fWelcome.cName.value;
VAR =公共社會行動中心document.fWelcome.cPass.value;
InitXML('../ Mphp / scSrvPhpWord.php?CTask = CheckWelcome'
+'&CNAME ='+ CNAME
+'&公共社會行動中心='+公共社會行動中心);
}
它傳輸到服務器進行驗證訪問者的名稱和密碼。 腳本檢查在用戶表中接收到的信息,並發送回其相關腳本顯示在頁面上的消息的基礎上,響應於註冊用戶(執行動作),或報告,沒有這樣的用戶,並且需要註冊。
Similar articles
Trending Now