日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

Ajax支持的Google地圖Mashup教程(2)

 guoxi022 2007-06-14

Ajax支持的Google地圖Mashup教程(2)

作者: ,  出處:Dev2Dev, 責(zé)任編輯: 葉江, 
2007-06-13 14:59
  本文中將使用工具輕松構(gòu)建終極的Hello World mashup:Google地圖mashup……
 

  最后,還需提到的JavaScript 功能就是向后端服務(wù)器發(fā)出帶外 HTTP 請(qǐng)求。通過(guò)此功能, JavaScript 可以發(fā)出不會(huì)導(dǎo)致頁(yè)面重載或改變?yōu)g覽器地址欄的請(qǐng)求。該功能通常被稱為Ajax,但是實(shí)現(xiàn)該功能的實(shí)際上是XMLHttpRequest,它是調(diào)用 HTTP 請(qǐng)求的JavaScript 類。HTTP 請(qǐng)求通常是異步的,這要求編程人員定義一個(gè)回調(diào)函數(shù),在接收響應(yīng)時(shí)調(diào)用。

var request = new XMLHttpRequest();
function invokeAjax() {
        request.open("GET", ‘a(chǎn)jaxTarget.html‘, true);
        request.onreadystatechange = ajaxCallback;
        request.send(null);    
}

function ajaxCallback() {
  // check if response is complete, then do stuff      
}

  我先討論在mashup 應(yīng)用程序中使用到的 XMLHttpRequest 功能的一個(gè)主要限制,然后才能討論該功能。

  為了保護(hù)用戶免受惡意代碼編寫者的攻擊,所有瀏覽器都實(shí)現(xiàn)了一個(gè)安全功能。Same Origin Policy 防止XMLHttpRequest以返回頁(yè)面的服務(wù)器所在的網(wǎng)絡(luò)域之外的服務(wù)器為目標(biāo)發(fā)送請(qǐng)求。例如,如果用戶瀏覽 http://www./ajaxPage.html,該頁(yè)面上的 JavaScript 代碼則不能將XMLHttpRequest 到 http://www./stealCookies.html。雖然該安全功能能夠保護(hù)用戶,但是它限制了 JavaScript ?客戶端程序在mashup 應(yīng)用程序中的作用,mashup 應(yīng)用程序需要使用來(lái)自多個(gè)域的服務(wù)。然而,兩種資源類型不受這一策略的限制:頁(yè)面可以跨域下載圖片和腳本。通過(guò)JavaScript 將參數(shù)追加到這些資源請(qǐng)求中,一些實(shí)現(xiàn)解決了這一限制。

  輕量級(jí)服務(wù)

  調(diào)用遠(yuǎn)程服務(wù)的功能是企業(yè)分布式架構(gòu)的基礎(chǔ),例如面向服務(wù)的架構(gòu)(Service Oriented Architecture ,SOA)。Web服務(wù)技術(shù)(例如 SOAP)被廣泛應(yīng)用于創(chuàng)建企業(yè)內(nèi)的可重用服務(wù)。這些實(shí)現(xiàn)效果很好,但是在一些情況下SOAP 未免有些大材小用。特別在客戶端是瀏覽器時(shí),需要一個(gè)輕量級(jí)的解決方案。

  一種構(gòu)建稱為 REST 的輕量級(jí)服務(wù)的方法開始流行,在Web 2.0 應(yīng)用程序中這種方法應(yīng)用得尤為普遍。 REST 提供了一種構(gòu)建 HTTP 可尋址服務(wù)的干凈模型,從瀏覽器可以很容易地調(diào)用該服務(wù)。對(duì)于REST 的完整學(xué)術(shù)定義不適合本教程,我總結(jié)了幾個(gè)要點(diǎn):

  •   REST 服務(wù)表示為一個(gè)URL,通過(guò)基本的 HTTP 請(qǐng)求訪問(wèn),例如http:///content/getArticles?author=joe。
  •   HTTP 動(dòng)詞很重要: GET 是讀操作, POST 是創(chuàng)建,PUT 更新服務(wù)。
  •   返回的有效負(fù)載通常是XML 或 JSON。

  將 REST 的含義解釋得更清楚可將會(huì)引起爭(zhēng)議,因此以上概括已經(jīng)足夠。

  還需要進(jìn)一步解釋最后一個(gè)要點(diǎn)。以上列出了兩種流行格式作為返回的有效負(fù)載:XML 和 JSON 。似乎可以選擇 XML,它在全世界應(yīng)用廣泛。而 REST 服務(wù)可以返回XML,客戶端 JavaScript 代碼需要遍歷返回的 XML 的DOM ,來(lái)提取所需信息。這當(dāng)然可以,但是對(duì)于瀏覽器中的客戶端程序是JavaScript 的情況來(lái)說(shuō),還可以選擇另一種格式。JavaScript 對(duì)象標(biāo)志(JavaScript Object Notation ,JSON)是一種 JavaScript 對(duì)象序列化格式,它減少了客戶端的工作。客戶端可以通過(guò)調(diào)用將返回的JSON 文本反序列化成一個(gè)本機(jī) JavaScript 對(duì)象,然后可以使用JavaScript 語(yǔ)法操縱JavaScript 對(duì)象。這通常是個(gè)簡(jiǎn)單的方法,因此對(duì)于 Web 2.0 應(yīng)用程序使用的 REST 服務(wù)來(lái)說(shuō),JSON 很流行。

  下面是一個(gè)序列化格式的 JSON 對(duì)象示例:

{"location":   
        {"id":  "WashingtonDC",                
         "city": "Washington DC",                      
         "venue": "Hilton Hotel, Tysons Corner",
         "address": "7920 Jones Branch Drive"
        }
}

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多