首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

原声js发送ajax请求

使用原生 JavaScript 发送 AJAX(Asynchronous JavaScript and XML)请求是一种常见的与服务器进行异步通信的方法。尽管现代开发中更常用 fetch API 或第三方库(如 Axios),但了解 AJAX 的基础概念仍然非常重要。

基本概念

AJAX 允许网页在不重新加载整个页面的情况下,与服务器交换数据并更新部分网页内容。它主要依赖于 XMLHttpRequest 对象来实现。

优势

  1. 提升用户体验:无需刷新整个页面即可更新部分内容。
  2. 减少服务器负载:只请求必要的数据,降低服务器负担。
  3. 提高性能:异步通信避免阻塞页面加载。

类型

AJAX 请求主要分为以下几种类型:

  • GET 请求:用于从服务器获取数据。
  • POST 请求:用于向服务器发送数据。
  • PUT 请求:用于更新服务器上的资源。
  • DELETE 请求:用于删除服务器上的资源。

应用场景

  • 动态内容加载:例如,加载评论、分页数据等。
  • 表单提交:无需刷新页面即可提交表单数据。
  • 实时搜索建议:根据用户输入实时获取搜索建议。

示例代码

以下是使用原生 JavaScript 发送 AJAX GET 和 POST 请求的示例:

发送 GET 请求

代码语言:txt
复制
// 创建 XMLHttpRequest 对象
var xhr = new XMLHttpRequest();

// 配置请求
xhr.open('GET', 'https://api.example.com/data', true);

// 设置响应类型
xhr.responseType = 'json';

// 注册回调函数
xhr.onload = function() {
    if (xhr.status === 200) {
        console.log('成功:', xhr.response);
    } else {
        console.error('错误:', xhr.statusText);
    }
};

// 处理网络错误
xhr.onerror = function() {
    console.error('网络错误');
};

// 发送请求
xhr.send();

发送 POST 请求

代码语言:txt
复制
// 创建 XMLHttpRequest 对象
var xhr = new XMLHttpRequest();

// 配置请求
xhr.open('POST', 'https://api.example.com/data', true);

// 设置请求头
xhr.setRequestHeader('Content-Type', 'application/json;charset=UTF-8');

// 注册回调函数
xhr.onload = function() {
    if (xhr.status === 201) { // 201 Created
        console.log('成功:', xhr.response);
    } else {
        console.error('错误:', xhr.statusText);
    }
};

// 处理网络错误
xhr.onerror = function() {
    console.error('网络错误');
};

// 发送请求体
var data = JSON.stringify({
    name: 'John',
    age: 30
});
xhr.send(data);

常见问题及解决方法

  1. 跨域请求问题(CORS)
    • 原因:浏览器的同源策略限制了不同源之间的请求。
    • 解决方法:服务器端设置适当的 CORS 头,允许跨域请求。
  • 请求超时
    • 原因:服务器响应时间过长或网络延迟。
    • 解决方法:设置 xhr.timeout 并处理 timeout 事件。
    • 解决方法:设置 xhr.timeout 并处理 timeout 事件。
  • 处理 JSON 数据
    • 原因:服务器返回的数据格式不正确或解析失败。
    • 解决方法:确保服务器返回正确的 JSON 格式,并在客户端正确解析。
    • 解决方法:确保服务器返回正确的 JSON 格式,并在客户端正确解析。

通过以上示例和说明,希望能帮助你更好地理解和使用原生 JavaScript 发送 AJAX 请求。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

AJAX发送POST请求

在 AJAX 请求中,我们可以使用 POST 方法发送数据到服务器,以便进行处理和保存。...发送 POST 请求的方法在 AJAX 请求中发送 POST 请求,我们需要注意以下几个方面:设置请求方法:将请求方法设置为 POST,以指示我们要发送一个 POST 请求。...在 AJAX 中,可以使用 method 或 type 参数来指定请求方法。设置请求 URL:设置请求的 URL,指定服务器端处理脚本的路径。服务器端脚本将接收并处理 POST 请求发送的数据。...下面是一个使用 jQuery 的示例,演示如何发送 POST 请求:$.ajax({ url: 'example.php', method: 'POST', data: { key1: 'value1...: function(xhr, status, error) { console.log('请求失败:', error); }});在上述示例中,我们使用 $.ajax() 方法发送一个 POST

4.1K20
  • AJAX - 向服务器发送请求请求

    AJAX - 向服务器发送请求请求 XMLHttpRequest 对象用于和服务器交换数据。...---- 向服务器发送请求 如需将请求发送到服务器,我们使用 XMLHttpRequest 对象的 open() 和 send() 方法: xmlhttp.open("GET","ajax_info.txt...然而,在以下情况中,请使用 POST 请求: 无法使用缓存文件(更新服务器上的文件或数据库) 向服务器发送大量数据(POST 没有数据量限制) 发送包含未知字符的用户输入时,POST 比 GET 更稳定也更可靠...也就是说,当JS代码加载到当前AJAX的时候会把页面里所有的代码停止加载,页面处于一个假死状态,当这个AJAX执行完毕后才会继续运行其他代码页面解除假死状态(即当ajax返回数据后,才执行后面的function2...二.什么是异步请求:(true)        异步请求就当发出请求的同时,浏览器可以继续做任何事,Ajax发送请求并不会影响页面的加载与用户的操作,相当于是在两条线上,各走各的,互不影响。

    1.8K10

    AJAX请求重复发送问题

    在进行 AJAX(Asynchronous JavaScript and XML)请求时,我们有时会遇到请求重复发送的问题。...请求重复发送的原因请求重复发送通常是由于以下原因导致的:重复的事件绑定:如果在事件处理程序中绑定了 AJAX 请求,而该事件又被多次触发(例如,点击按钮),就会导致请求重复发送。...网络延迟和响应时间:在网络延迟较高或服务器响应时间较长的情况下,客户端可能会在等待响应期间发送新的 AJAX 请求。...解决请求重复发送的方法为了解决 AJAX 请求重复发送的问题,我们可以采取以下方法:禁用重复触发:在事件处理程序中,我们可以通过禁用重复触发的方式来防止请求重复发送。...取消之前的请求:在发送新的 AJAX 请求之前,可以先取消之前的请求,以确保只有最新的请求会被发送。可以使用 abort() 方法来取消正在进行的 AJAX 请求。

    1.2K20

    如何防止重复发送ajax请求

    作者 | 周浪 背景 先来说说重复发送ajax请求带来的问题 场景一:用户快速点击按钮,多次相同的请求打到服务器,给服务器造成压力。...筛选结果和查询条件不一致,用户体验很不好 常用解决方案 为了解决上述问题,通常会采用以下几种解决方案 状态变量 发送ajax请求前,btnDisable置为true,禁止按钮点击,等到ajax请求结束解除限制...该方案能覆盖场景一和场景二,不过也存在一个大问题: wait time是一个固定时间,而ajax请求的响应时间不固定,wait time设置小于ajax响应时间,两个ajax请求依旧会存在重叠部分,wait...发送请求前先判断这个api请求之前是否已经有还在pending的同类,即是否存在上述数组中,如果存在,则不发送请求,不存在就正常发送并且将该api添加到数组中。等请求完结后删除数组中的这个api。...如果存在,则删除数组中的这个api并且执行数组中在pending的ajax请求的cancel函数进行请求取消,然后就正常发送第二次的ajax请求并且将该api添加到数组中。

    2.5K11

    ajax请求的五个步骤java_如何发送ajax请求?ajax请求的五个步骤详解

    JavaScript 不是使用 AJAX 编程的唯一客户端脚本语言; VBScript 和其他语言都有这种功能,但 JavaScript 是最受欢迎的。 如何构建一个完整的ajax请求?...例://url就是请求的地址 //successFunc就是一个请求返回成功之后的一个function,有一个参数,参数就是服务器返回的报文体 function ajax(url, successFunc...; } } }; xhr.send(); } Ajax请求的五个步骤都有哪些? 1....name=”+ name,true)此步注意设置http的请求方式(post / get), 如果是POST方式,注意设置请求头信息xmlHttp.setRequestHeader(“Content-Type...”, “application/x-www-form-urlencoded”) 4.向服务器端发送数据xmlHttp.send(null); 如果是post就不为空 5.在回调函数中针对不同的响应状态进行处理

    2.1K40

    如何在 Web 关闭页面时发送 Ajax 请求

    又或者是发送服务器ajax请求,通知服务器用户已经离开,比如直播间内的退房操作。 本文主要分两部分来讲解怎么完成退出行为的上报。 1....请求发送 有了上面的监听,事情只完成了一半,如果我们在监听中直接发送ajax请求,就会发现请求被浏览器abort了,无法发送出去。在页面卸载的时候,浏览器并不能保证异步的请求能够成功发出去。...方案2:发送异步请求,并且在服务端忽略ajax的abort 虽然异步请求会被浏览器abort,但是如果服务端可以忽略abort,仍然正常执行,也是可以的。...如何在 Web 关闭页面时发送 Ajax 请求 (2)使用FormData对象,但是这时content-type会被设置成"multipart/form-data"。...如何在 Web 关闭页面时发送 Ajax 请求 通过尝试,可以发现使用blob发送比较方便,内容的设置也比较灵活,如果发送的消息抓包后发现后台没有识别出来,可以尝试修改内容的string或者header

    3.3K30
    领券