2-使用原生js发送ajax请求

JS AJAX GET&POST详解
本文详细介绍了使用JavaScript实现AJAX的GET和POST请求的方法。包括如何创建XMLHttpRequest对象、设置请求方式、发送请求及接收响应等关键步骤,并提供了完整的示例代码。

javascript/js的ajax的GET请求代码如下所示:

<script type="text/javascript"> 
/* 创建 XMLHttpRequest 对象 */
var xmlHttp; 
function GetXmlHttpObject(){ 
  if (window.XMLHttpRequest){ 
    // code for IE7+, Firefox, Chrome, Opera, Safari 
    xmlhttp=new XMLHttpRequest(); 
  }else{// code for IE6, IE5 
    xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); 
  } 
  return xmlhttp; 
} 
// -----------ajax方法-----------// 
function getLabelsGet(){ 
  xmlHttp=GetXmlHttpObject(); 
  if (xmlHttp==null){ 
    alert('您的浏览器不支持AJAX!'); 
    return; 
  } 
  var id = document.getElementById('id').value; 
  var url="http://127.0.0.1:8080/mytest/test/noReturn.do?t="+Math.random(); 
  xmlHttp.open("GET",url,true); 
  xmlHttp.onreadystatechange=favorOK;//发送事件后,收到信息了调用函数 
  xmlHttp.send(); 
}
function getOkGet(){ 
  if(xmlHttp.readyState==1||xmlHttp.readyState==2||xmlHttp.readyState==3){ 
    // 本地提示:加载中 
  } 
  if (xmlHttp.readyState==4 && xmlHttp.status==200){ 
    var d= xmlHttp.responseText; 
    // 处理返回结果 
  } 
} 
</script>
javascript/js的ajax的POST请求:

<script type="text/javascript"> 
    /* 创建 XMLHttpRequest 对象 */
    var xmlHttp; 
    function GetXmlHttpObject(){ 
	if (window.XMLHttpRequest){ 
	    // code for IE7+, Firefox, Chrome, Opera, Safari 
	    xmlhttp=new XMLHttpRequest(); 
	}else{// code for IE6, IE5 
	    xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); 
        } 
    return xmlhttp; 
    } 
    // -----------ajax方法-----------// 
    function getLabelsPost(){ 
        xmlHttp=GetXmlHttpObject(); 
	if (xmlHttp==null){ 
	    alert('您的浏览器不支持AJAX!'); 
	    return; 
	} 
	var url="http://127.0.0.1:8080/mytest/test/noReturn.do?t="+Math.random(); 
	xmlhttp.open("POST",url,true); 
	xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded"); 
	xmlhttp.send(); 
	xmlHttp.onreadystatechange=getLabelsOK;//发送事件后,收到信息了调用函数 
    } 
    function getOkPost(){ 
	if(xmlHttp.readyState==1||xmlHttp.readyState==2||xmlHttp.readyState==3){ 
	// 本地提示:加载中/处理中 
        } 
	if (xmlHttp.readyState==4 && xmlHttp.status==200){ 
	    var d=xmlHttp.responseText; // 返回值 
            // 处理返回值 
    } 
} 
</script>



### 如何使用原生 JavaScript 发送 POST 类型的 AJAX 请求 要通过原生 JavaScript 使用 AJAX 技术发送 POST 请求,可以按照以下方式实现。以下是基于 `XMLHttpRequest` 对象的一个具体示例: ```javascript function sendPostRequest(url, data, callback) { var xhr = new XMLHttpRequest(); xhr.open('POST', url, true); // 设置请求头以表明我们正在发送 JSON 数据 xhr.setRequestHeader('Content-Type', 'application/json;charset=UTF-8'); xhr.onreadystatechange = function () { if (xhr.readyState === 4 && xhr.status === 200) { // 调用回调函数处理响应数据 callback(xhr.responseText); } }; // 将数据转换为 JSON 字符串并发送 xhr.send(JSON.stringify(data)); } // 示例调用 var postData = { name: "John", age: 30 }; sendPostRequest('/api/endpoint', postData, function(response) { console.log('Server Response:', response); }); ``` 上述代码展示了如何构建一个通用的函数来发送 POST 请求[^1]。该函数接受三个参数:目标 URL、待发送的数据对象以及用于处理服务器返回结果的回调函数。 #### 关键点解析 - **设置 Content-Type**: 当发送 JSON 格式的 POST 数据时,需显式指定 `'Content-Type': 'application/json'` 的头部信息。 - **JSON 序列化**: 在实际发送之前,应将 JavaScript 对象序列化为字符串形式以便传输给服务器。 - **异步操作管理**: 利用了 `onreadystatechange` 方法监听状态变化,并仅当请求完成 (`readyState === 4`) 和成功 (`status === 200`) 才执行回调逻辑。 此外,在现代 Web 开发场景下,除了传统的 `XMLHttpRequest` API 外,还可以考虑采用更简洁易读的 Fetch API 来替代它[^2]: ```javascript async function sendPostWithFetch(url, data) { const options = { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify(data) }; try { let response = await fetch(url, options); let result = await response.json(); console.log(result); } catch (error) { console.error('Error during post request:', error); } } ``` 此版本利用了 ES6 中引入的 Promise 及 async/await 特性简化了错误处理流程和代码结构。 ### 总结 无论是传统方法还是现代化手段,核心都围绕着正确配置 HTTP 请求细节展开工作,比如定义合适的动词(这里指 POST)、附加必要的元数据(如 MIME 类型声明),还有就是妥善封装业务负载供远程端口消费[^1]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值