XMLHTTP

var strinfo
 function getAjax()
{
 var XmlHttp;
 
 //Creating object of XMLHTTP in IE
 try
  {
  XmlHttp = new ActiveXObject("Msxml4.XMLHTTP");
  }
 catch(e)
  {
   try
    {
     XmlHttp = new ActiveXObject("Msxml3.XMLHTTP");
    }
   catch(e)
    {
     try
      {
       XmlHttp = new

ActiveXObject("Msxml2.XMLHTTP");
      }
     catch(e)
      {
       try
        {
         XmlHttp = new

ActiveXObject("Microsoft.XMLHTTP");
        }
       catch(oc)
        {
         XmlHttp = null;
        }
      }
    }
  }
 //Creating object of XMLHTTP in Mozilla and Safari
 if(!XmlHttp && typeof XMLHttpRequest != "undefined")
 {
  XmlHttp = new XMLHttpRequest();
  if(XmlHttp.overrideMimeType)
  {
       XmlHttp.overrideMimeType("text/xml");
      }
 }
 return XmlHttp;
}
function  refreshh()   
{   
//5秒自?刷新一次,1秒取得一次数据.   

timer  =  window.setInterval("loadData()",5000);  

}   
<!-- 
function  loadData(){ 

 url = "message_new.aspx";
 req = getAjax();

 req.onreadystatechange = function(){
 
  if( req.readyState == 4 && req.status == 200 ) {
   strinfo = req.responseText;
   shownewmessage();
  }
 
 }
 
 req.open( 'GET', url, true );
 req.send( null );


}
function  shownewmessage(){  
document.all["labelnumber"].innerText ="?有 "+strinfo+" 条新消息";

<think>好的,我现在需要处理用户关于XMLHttpRequest的使用指南和解决方案的请求。首先,用户明确提到了几个引用内容,我需要先仔细阅读这些引用,确保回答准确引用相关内容。 首先,引用[1]提到了XMLHttpRequest的历史和标准化过程,分为Level 1和Level 2。这可能需要在介绍基本概念时引用,说明不同版本的区别。 引用[2]和[3]都涉及POST请求的设置,特别是设置请求头和发送数据。引用[2]展示了如何发送表单格式的数据,而引用[3]则是发送JSON数据,并且提到了预检请求的问题。这部分内容需要详细讲解,包括如何设置Content-Type,以及处理跨域请求时的预检机制。 引用[4]讨论了使用FormData和异步处理远程文件的方法,提到了使用async/await和Promise。这部分可能需要作为解决方案的一部分,特别是在处理文件上传或复杂数据时。 接下来,用户的问题是要查找XMLHttpRequest的使用指南或解决方案。根据用户的引用,他们可能遇到了发送不同格式数据、处理跨域请求或异步文件上传的问题。因此,我需要结构清晰地分步骤说明基本用法、不同数据格式的发送、跨域处理以及常见问题解决方案。 需要确保回答符合系统指令:行内数学公式用$...$,独立公式用$$...$$,但在这个问题中可能用不上数学公式。同时要使用中文,生成相关问题,并正确引用给定的引用内容。 可能需要分几个部分来组织内容: 1. XMLHttpRequest的基本概念和历史(引用[1]) 2. 发送GET和POST请求,包括不同数据格式的设置(引用[2]、[3]) 3. 处理跨域请求和预检机制(引用[3]) 4. 使用FormData处理文件上传和异步数据(引用[4]) 5. 常见问题及解决方案,比如预检请求、异步处理等 在生成相关问题的时候,要考虑用户可能进一步的问题,比如如何发送JSON数据,如何处理跨域错误,或者如何上传文件等。确保每个引用至少被使用一次,同时保持回答的连贯性和实用性。 需要检查是否存在技术错误,比如是否正确区分了Level 1和Level 2的特性,是否正确展示了设置请求头的步骤,以及是否正确处理了异步操作。另外,要确保代码示例正确,比如在发送POST请求时,是否需要先open再setRequestHeader,顺序是否正确,这些都需要验证。 最后,按照用户要求的结构,先回答,再生成相关问题,确保引用标注自然,比如在提到预检请求时引用[3],提到FormData时引用[4]等。</think>### XMLHttpRequest 使用指南与解决方案 #### 一、XMLHttpRequest 基础概念 XMLHttpRequest(XHR)是浏览器提供的用于与服务器交互的API,支持异步数据传输[^1]。其标准化分为Level 1和Level 2,Level 2新增了跨域请求、进度事件等特性[^1]。 #### 二、核心使用方法 1. **GET请求示例** ```javascript const xhr = new XMLHttpRequest(); xhr.open('GET', 'https://api.example.com/data', true); xhr.onload = function() { if (xhr.status === 200) { console.log(xhr.responseText); } }; xhr.send(); ``` 2. **POST请求(表单格式)** 需设置`Content-Type`并序列化数据: ```javascript xhr.open('POST', '/submit', true); xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); // 引用[2] xhr.send('username=test&password=123'); ``` 3. **POST请求(JSON格式)** 设置`Content-Type: application/json`时会触发预检请求(OPTIONS)[^3]: ```javascript xhr.open('POST', '/api', true); xhr.setRequestHeader('Content-Type', 'application/json'); // 引用[3] xhr.send(JSON.stringify({ key: 'value' })); ``` #### 三、跨域请求处理 1. **CORS预检机制** 当请求头包含非简单字段(如自定义头或`Content-Type: application/json`)时,浏览器自动发起OPTIONS预检请求[^3]。 2. **服务端配置示例** 需返回以下响应头: ``` Access-Control-Allow-Origin: * Access-Control-Allow-Methods: POST, GET, OPTIONS Access-Control-Allow-Headers: Content-Type ``` #### 四、文件上传与FormData 1. **本地文件上传** ```javascript const formData = new FormData(); formData.append('file', fileInput.files[0]); xhr.open('POST', '/upload', true); xhr.send(formData); // 自动设置multipart/form-data ``` 2. **远程文件处理** 使用`async/await`确保异步加载完成: ```javascript async function uploadRemoteFile(url) { const response = await fetch(url); const blob = await response.blob(); const formData = new FormData(); formData.append('file', blob); // 引用[4] xhr.send(formData); } ``` #### 五、常见问题解决方案 | 问题现象 | 解决方案 | |---------|----------| | 跨域请求被拦截 | 检查服务端CORS配置,确保返回正确的响应头[^3] | | 网络请求超时 | 设置`xhr.timeout`属性并监听`ontimeout`事件 | | 大文件上传中断 | 分片上传或使用进度事件监控 | | 旧浏览器兼容性问题 | 使用`ActiveXObject`降级方案 |
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值