XMLHttpRequest

本文详细介绍了在不同浏览器中如何实现Ajax非同步请求,通过使用XMLHttpRequest或ActiveXObject,并提供了创建请求、设置请求属性及处理响应的具体方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

导读:
  在Ajax應用程式中,如果是Mozilla/Firefox/Safari中,可以透過XMLHttpRequest來發出非同步請求,如果是在IE6 或IE先前版本,則是使用ActiveXObject來發出非同步請求,為了各個不同瀏覽器間的相容性,必須進行測試可取得XMLHttpRequest 或ActiveXObject,例如:
   var xmlHttp;
   function createXMLHttpRequest() {
   if (window.XMLHttpRequest) { // 如果可以取得XMLHttpRequest
   xmlHttp = new XMLHttpRequest(); // Mozilla、Firefox、Safari
   }
   else if (window.ActiveXObject) { // 如果可以取得ActiveXObject
   xmlHttp = new ActiveXObject("Microsoft.XMLHTTP"); // Internet Explorer
   } }
  這段程式碼可以滿足大部份的瀏覽器,您可以再進一步檢查是否真正生成了物件,例如:
   if(xmlHttp) {
   // do request
   }
   else {
   alert("您的瀏覽器不支援這個Ajax程式的功能");
   }
  在建立XMLHttpRequest之後,則可以使用以下的幾種方法:
  void open(string method, string url, boolean asynch, string username, string password)
  開啟對伺服端的連結;method為請求方式(GET、POST);url為伺服端位址,如果是GET的話,可加上請求參數與值;asynch為非同步設定,預設是true,表示使用非同步方式。
  void send(content)
  對伺服端傳送請求,content這以放XML、輸入串流、字串、JSON格式的內容,放進去會放在POST本體中發送。
  void setRequestHeader(string header, string value)
  為HTTP請求設定一個給定的 header 設定值。
  void abort()
  用來中斷請求。
  string getAllResponseHeaders()
  傳回一個字串,其中包含HTTP請求的所有回應標頭。
  string getResponseHeader(string header)
  傳回一個字串,其中包含指定的回應標頭值。
  XMLHttpRequest包括以下幾個標準屬性:
  onreadystatechange
  參考至callback函式,readyState每次改變時,都會呼叫onreadystatechange所參考的函式。
  readyState
  會有0到4的數值,分別表示不同的請求狀態:
  0 = 未初始化的連線(uninitialized),還沒呼叫open()
  1 = 載入中(loading),呼叫open(),還沒呼叫send()
  2 = 已載入(loaded),呼叫send(),請求header/status準備好
  3 = 互動中(interactive),正在與伺服器互動中
  4 = 請求完成(completed),完成請求
  responseText
  伺服器傳來的請求回應文字,會設定給這個屬性。
  responseXML
  伺服器傳來的請求回應如果是XML,會成為DOM設定給這個屬性。
  status
  伺服器回應的狀態碼,例如200是OK,404為Not Found…
  statusText
  伺服器回應的狀態文字。
  一個基本的Ajax請求可以是以下的片段:
   function startRequest() {
   createXMLHttpRequest(); // 建立非同步請求物件
   xmlHttp.onreadystatechange = handleStateChange; // 設定callback函式
   xmlHttp.open("GET", "simpleResponse.txt"); // 開啟連結
   xmlHttp.send(null); // 傳送請求
   }
   function handleStateChange() { // 在這邊處理非同步回應
  
   }
  當每次readyState改變時,都會呼叫以上程式片段中設定的handleStateChange()函式,通常會在請求完成進行處理,所以您可以如以下的程式片段來處理回應:
   function handleStateChange() {
   if (xmlHttp.readyState == 4) { // 測試狀態是否請求完成
   if (xmlHttp.status == 200) { // 如果伺服端回應OK
   alert("伺服器回應" + xmlHttp.responseText); // 這邊只取得回應文字
   }
   }
   }
  
  Trackback: http://tb.blog.youkuaiyun.com/TrackBack.aspx?PostId=1511012

本文转自
http://blog.youkuaiyun.com/caterpillar_here/archive/2007/02/16/1511012.aspx
identity 身份认证 购VIP最低享 7 折! triangle vip 30元优惠券将在58:6:9后过期 去使用 triangle QT+Poppler+PDFviewer.zip 是一个用于在Windows操作系统下,使用QT5框架结合Poppler库开发PDF阅读器的项目。这个项目的核心是利用Poppler库解析PDF文档,并通过QT5进行用户界面的设计和交互。以下将详细介绍相关知识点: 1. **QT5框架**:QT(Qt)是一个跨平台的应用程序开发框架,支持多种操作系统,如Windows、Linux、macOS等。它提供了丰富的库函数和组件,使得开发者可以方便地构建图形用户界面(GUI)应用程序。QT5是QT的第五个主要版本,引入了许多新特性和改进,如QML(Qt Meta Object Language)用于声明式UI设计,以及更好的性能和API优化。 2. **Poppler库**:Poppler是一个开源的PDF文档处理库,源自Xpdf项目,主要用于PDF文件的解析、渲染和提取文本。Poppler提供了C++接口,使得开发者能够方便地在应用程序中集成PDF阅读和处理功能。它可以读取PDF文件,显示页面,提取文本和元数据,甚至支持对PDF文件进行注释和修改(但本项目可能仅涉及阅读功能)。 3. **PDF viewer的实现**:在本项目中,PDF viewer是基于QT5 GUI组件构建的,它利用Poppler库来加载和解析PDF文档。`mainwindow.cpp`和`mainwindow.h`包含了主窗口类的定义和实现,这是用户与应用程序交互的主要界面。`pdfcanvas.cpp`和`pdfcanvas.h`则可能包含了用于显示PDF页面的自定义画布类,该类使用Poppler库来渲染PDF页面到QT的画布上。 4. **项目构建与编译**:`newtime.pro`是QT项目的配置文件,用于指定项目依赖的库(如Poppler)、源代码文件、编译选项等。`.pro.user`文件则保存了用户的特定编译设置,如编译器路径或调试选项。开发者需要使用QT的qmake工具或直接在IDE如Qt Creator中打开此项目,进行编译和链接,确保所有依赖库都正确安装并链接。 5. **文件操作**:`main.cpp`通常是程序的入口点,负责初始化QT应用环境并运行主循环。在PDF viewer中,可能会在`main.cpp`中实例化主窗口,并调用Poppler库的相关函数来加载PDF文件。 6. **使用流程**:用户可以通过QT界面选择PDF文件,然后通过Poppler库读取文件内容,将页面渲染到QT的控件上。用户可以通过滚动、缩放等操作查看PDF内容。 Poppler库的强大功能使得PDF viewer可以支持多页显示、文本搜索、书签管理等高级特性。 7. **优化与扩展**:为了提升用户体验,开发者可能会对PDF viewer进行各种优化,比如添加平滑滚动、快速查找、页面预加载等功能。此外,还可以考虑支持批注、打印、PDF转换等更复杂的操作,以增强软件的功能性和实用性。 QT+Poppler+PDFviewer.zip项目提供了一个基础的PDF阅读器实现,开发者可以在此基础上进一步定制和扩展,以满足特定的PDF处理需求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值