添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
// 2.监听对象状态的改变 xhr.onReadyStateChange = function(){ if(xhr.readyState = 4 && xhr.status == 200){ // 5.获取数据 console.log(xhr.response); // 3.配置请求的方式/URL xhr.open('get','http://localhost:9898/get', true) // 4.发送请求 xhr.send()

发送同步请求:

xhr.open('get','http://localhost:9898/get', false)

XMLHttpRequest其他事件监听

除了onreadystatechange还有其他的事件可以监听

  • loadstart:请求开始。
  • progress: 一个响应数据包到达,此时整个 response body 都在 response 中。
  • error:发生连接错误,例如,域错误。不会发生诸如 404 这类的 HTTP 错误。
  • load:请求成功完成。
  • loadend:在 load,error,timeout 或 abort 之后触发。

使用load替换readystatechange来获取数据:

xhr.onload = function(){
    console.log(xhr.response);
}

请求取消和延迟时间

  • xhr.timeout = timeout(毫秒),默认值为0,表示没有设置超时时间;
  • xhr.abort() 取消请求

响应数据和响应类型

通过responseType可以设置获取数据的类型

  • 如果将 responseType 的值设置为空字符串,则会使用 text 作为默认值。
  • 目前服务器基本返回的都是json数据,直接设置为json即可;
xhr.responseType = "json"

GET/POST请求传递参数

常见的传递给服务器数据的方式有如下几种:

  • 方式一:GET请求的query参数
const xhr = new XMLHttpRequest()
xhr.onreadystatechange = function() {
    if (xhr.readyState !== XMLHttpRequest.DONE) return
    if (xhr.status >= 200 && xhr.status < 300 || xhr.status === 304) {
        console.log(xhr.response)
    } else {
xhr.responseType = "json"
// 1.get请求传递参数
xhr.open("get", "http://localhost:9898/get?name=xiuluo&age=18")
xhr.send()
  • 方式二:POST请求 x-www-form-urlencoded 格式
...省略部分代码,省略部分可见方式一
xhr.open("post", "http://localhost:9898/post-urlen")
const urlParam = "name=xiuluo&age=18"
xhr.setRequestHeader('Content-type', 'application/x-www-form-urlencoded')
xhr.send(urlParam)
  • 方式三:POST请求 FormData 格式
<form class="info">
   <input name="name" value="xiuluo">
   <input name="age" value="18">
</form>
xhr.open("post", "http://localhost:9898/post")
const infoEl = document.querySelector(".info")
const form = new FormData(infoEl)
form.append("height", 1.88)
xhr.send(form)
  • 方式四:POST请求 JSON 格式
xhr.open("post", "http://localhost:9898/post-json")
const jsonParam = JSON.stringify({name: "xiuluo", age: 18})
xhr.setRequestHeader('Content-type', 'application/json; charset=utf-8')
xhr.send(jsonParam)

ajax封装

function xiuajax({
  method = "get",
  data = {},
  timeout = 5000,
  headers = {},
  success,
  failure
} = {}) {
  // 1.创建xhr对象
  const xhr = new XMLHttpRequest()
  xhr.onreadystatechange = function() {
    if (xhr.readyState !== XMLHttpRequest.DONE) return
    if (xhr.status >= 200 && xhr.status < 300 || xhr.status === 304) {
      success && success(xhr.response)
    } else {
      failure && failure(xhr.response)
  // 2.设置响应的类型
  xhr.responseType = "json"
  xhr.timeout = timeout
  // 3.发送请求
  const params = Object.keys(data).map(key => `${key}=${encodeURIComponent(data[key])}`)
  const paramsString = params.join("&")
  // 设置header
  if (method.toLowerCase() === "get") {
    xhr.open(method, url + "?" + paramsString)
    Object.keys(headers).forEach(headerKey => xhr.setRequestHeader(headerKey, headers[headerKey]))
    xhr.send()
  } else {
    xhr.open(method, url)
    xhr.setRequestHeader('Content-type', 'application/x-www-form-urlencoded')
    Object.keys(headers).forEach(headerKey => xhr.setRequestHeader(headerKey, headers[headerKey]))
    xhr.send(paramsString)
  return xhr
}

使用

xiuajax({
  url: "http://localhost:9898/post-json",
  method: "post",
  data: {
    name: "xiu",
    age: 18
  headers: {
    token: "xiuluo"
  success: function(res) {
    console.log("success:", res)
})

1660073304348.png

Fetch和Fetch API

Fetch可以看做是早期的XMLHttpRequest的替代方案,它提供了一种更加现代的处理方案:

  • 比如返回值是一个Promise,提供了一种更加优雅的处理结果方式
  • 比如不像XMLHttpRequest一样,所有的操作都在一个对象上;

fetch函数的使用:

Promise<Response> fetch(input[, init])

input:定义要获取的资源地址,可以是一个URL字符串,也可以使用一个Request对象(实验性特性)类型;

init:其他初始化参数

  • method: 请求使用的方法,如 GET、POST;
  • headers: 请求的头信息;
  • body: 请求的 body 信息;

Fetch数据的响应(Response)

Fetch的数据响应主要分为两个阶段:

阶段一:当服务器返回了响应(response)

  • fetch 返回的 promise 使用Response来对响应头进行解析;
  • 通过检查响应头,来检查 HTTP 状态以确定请求是否成功;
  • 如果 fetch 无法建立一个 HTTP 请求,例如网络问题,亦或是请求的网址不存在,那么 promise 就会 reject;
  • 异常的 HTTP 状态,例如 404 或 500,不会导致出现 error;

我们可以在 response 的属性中看到 HTTP 状态:

  • status:HTTP 状态码,例如 200;
  • ok:布尔值,如果 HTTP 状态码为 200-299,则为 true;

第二阶段,为了获取 response body,我们需要使用方法调用。

  • response.text() —— 读取 response,并以文本形式返回 response;
  • response.json() —— 将 response 解析为 JSON;

Fetch网络请求

基于Promise的使用方案:

const response = await fetch("http://localhost:9898/get?name=xiuluo&age=18")
const data = await response.json()
console.log("data:", data)

基于async、await的使用方案:

const response = await fetch("http://localhost:9898/post-urlen", {
    method: "post",
    headers: {
        "Content-Type": "application/x-www-form-urlencoded"
    body: "name=xiuluo&age=18"
const data = await response.json()
console.log("data:", data)

文件上传fetch

<form class="fileform">
    <input class="file" type="file">
</form>
<button class="upload">上传</button>
const fileEl = document.querySelector(".file")
const uploadBtn = document.querySelector(".upload")
uploadBtn.onclick = function() {
  // 1.获取文件
  const files = fileEl.files
  if (!files.length) {
    alert("请选择要上传的文件")
    return
  const avatarFile = files[0]
  const fileForm = new FormData()
  fileForm.append("file", avatarFile)
  // 2.开始上传
  fetch("http://localhost:9898/postupload", {
    method: "post",
    body: fileForm
  }).then(res => {
    return res.json()
  }).then(res => {
    console.log("res:", res)
}

文件上传xhr

uploadBtn.onclick = function() {
  // 1.获取文件
  const files = fileEl.files
  if (!files.length) {
    alert("请选择要上传的文件")
    return
  const avatarFile = files[0]
  const fileForm = new FormData()
  fileForm.append("file", avatarFile)
  // 2.开始上传
  const xhr = new XMLHttpRequest()
  xhr.upload.onprogress = function(event) {
    console.log(`${event.loaded}/${event.total}`)
  xhr.onload = function() {
    console.log(xhr.response)
  xhr.open("POST", "http://localhost:9898/postupload")
  // 不用设置xhr.setRequestHeader("Content-Type", "multipart/form-data")
  xhr.send(fileForm)
}

后端express代码

用到3个库express、multer、cors

const express = require("express");
const path = require('path')
const app = express();
const multer = require("multer")
const cors = require("cors")
app.use(express.json());
app.use(express.urlencoded({ extended: false }));
app.use(cors());
const storage = multer.diskStorage({
  destination: (req, file, cb) => {
    cb(null, "../uploads/")
  filename: (req, file, cb) => {
    cb(null, Date.now() + path.extname(file.originalname));
const upload = multer({ storage })
app.get("/get", (req, res, next) => {
  res.json({
    msg: "success",
    data: req.query,
app.post("/post-urlen", (req, res, next) => {
  res.json({
    msg: "success",
    data: req.body,
app.post("/post-formdata", (req, res, next) => {
  res.json({
    msg: "success",
    data: req.body,
app.post("/post-json", (req, res, next) => {
  res.json({
    msg: "success",
    data: req.body,
app.post("/postupload", upload.single('file'), (req, res, next) => {
  console.log(req.file);
  res.json({
    msg: "success",
    data: {url:'http://localhost:9898/'},
  res.end()
app.listen(9898, () => {
  console.log("server is running at " + 9898);
                            

Расчет налога и вычета за 9 месяцев https://kalm-invest.ru/services установленная дата уплаты — 09 https://kalm-invest.ru/buhu4et 01 https://kalm-invest.ru/law 2024 ( из-за переноса ): но для налоговиков этот реквизит не так важен https://kalm-invest.ru/privacy-policy Налог на УСН можно уменьшать на страховые взносы https://kalm-invest.ru/buhu4et Для этого соблюдайте три правила: На второй странице заполняют : По действующему порядку ИП на УСН с объектом налогообложения основным условием для признания взносов расходами остается факт их уплаты https://kalm-invest.ru/services Изменения в эту норму не вносились https://kalm-invest.ru/buhu4et Организация тоже может уменьшить размер единого налога, но не до нуля https://kalm-invest.ru/privacy-policy Расскажем, как это сделать https://kalm-invest.ru/buhu4et FelipeVax

Продам детский велосипед ,бывший в употреблении недорого https://touringcars-russia.ru/tour_1/tour.html Общая масса легкового автомобиля и прицепа не должна превышать 3 https://touringcars-russia.ru/tour_1/tour.html 5 тонн https://touringcars-russia.ru/ Все необходимое для водоснабжения, газоснабжения и электроснабжения вашего дома на колесах https://touringcars-russia.ru/ Караванинг на озеро Байкал https://touringcars-russia.ru/tour_2/tour.html Протяженность маршрута 7 029км https://touringcars-russia.ru/tour_2/tour.html Продолжительность караванинга 26 дней https://touringcars-russia.ru/tour_1/tour.html Основное преимущество данной серии - низкая цена https://touringcars-russia.ru/tour_2/tour.html При этом сохраняются все основные преимущества американских прицепов – высокий клиренс, баки черной воды большой емкости https://touringcars-russia.ru/tour_2/tour.html Несмотря на то, что прицепы данной серии имеют относительно не высокую стоимость, у них все равно есть кондиционер, электрифицированная маркиза и все остальные опции https://touringcars-russia.ru/tour_2/tour.html Дополнительными внедорожными качествами прицеп обладает не только за счет коротких свесов https://touringcars-russia.ru/tour_1/tour.html Прицепы рассчитаны до 5 спальных мест https://touringcars-russia.ru/ Идеальны для эксплуатации в России https://touringcars-russia.ru/tour_2/tour.html Все планировки серии https://touringcars-russia.ru/tour_1/tour.html STARCRAFT LAUNCH 21FBS https://touringcars-russia.ru/tour_1/tour.html Francisvoido

Вот сама пресс-форма для этой детали обозначена ниже синим: Чтобы открыть цех по выпуску изделий из пластмассы, потребуется сырье и полимерное оборудование https://www.sovtexno.ru/articles/prakticheskie-aspekty-tehnologii-litja-v-silikonovye-formy/ В целом затраты на открытие дела невелики https://www.sovtexno.ru/litie-pod-davleniem/ Предварительная сушка полимеров https://www.sovtexno.ru/litie-pod-davleniem/ Рис https://www.sovtexno.ru/articles/osobennosti-izgotovleniya-plastikovyh-korpusov-dlya-radioelektronnoj-apparatury/ 9 https://www.sovtexno.ru/lite-v-silikonovye-formy/ Схема получения пленки методом раздувки : 1 — экструдер; 2 — формующая головка; 3 — рукав пленки; 4, 6 — направляющие ролики; 5 — тянущие ролики; 7 — барабан с пленкой; 8 — канал для подачи сжатого воздуха; 9 — канал для подачи расплавленного полимера https://www.sovtexno.ru/litie-pod-davleniem/ 9 https://www.sovtexno.ru/lite-v-silikonovye-formy/ Выкладываем пластмассу в форму https://www.sovtexno.ru/ Volprint – профессиональная команда в сфере 3D печати https://www.sovtexno.ru/kontaktnoe-formovanie/ Предлагаем Вам рассмотреть возможность приобретения шин производства КНР, для грузового транспорта и спецтехники, с наших складов в Новосибирске или Владивостоке https://servishin.ru/catalog/gruzovye-shiny/safecess/safecess_1035.html Производим отгрузку товара мелким https://servishin.ru/catalog/gruzovye-shiny/aeolus/adl58.html https://servishin.ru/catalog/gruzovye-shiny/continental/continental-conti-scandinavia-ls3-23575r175-132130m.html https://servishin.ru/catalog/gruzovye-shiny/taitong/ Так называется программа обмена старого автомобиля на новый с доплатой https://servishin.ru/catalog/gruzovye-shiny/copartner/copartner_1059.html Подобную услугу предлагают многие автосалоны https://servishin.ru/catalog/gruzovye-shiny/michelin/xte3.html Именно специалисты этих автосалонов и высчитывают цену автомобиля, которым вы владеете, при обмене на новый автомобиль https://servishin.ru/catalog/gruzovye-shiny/goodride/goodride_1128.html

Из ясеня https://kpdkamen.ru/tabletop/ Из минусов: пористость, впитывание влаги, чувствительность к температурам и кислотам https://kpdkamen.ru/actions/fireplaces/ Ассортимент широкий: от столешниц из сосны за 1000—2000 Р за погонный метр до элитных сортов — красное, черное дерево от 50 000 Р за погонный метр https://kpdkamen.ru/tabletop/ Изготовление деревянных слэбов происходит в цехах или мастерских по обработке древесины https://kpdkamen.ru/articles/poly-iz-prirodnogo-kamnya-i-keramicheskoj-plitki/ Столешница из дерева для кухни https://kpdkamen.ru/waterjet_cutting/ При этом они довольно практичны: хорошо переносят воздействие воды, температурных перепадов, воздействий механического типа https://kpdkamen.ru/articles/kamennye-lestnitsy/ Столешницу для кухни можно изготовить из травертина – природного минерала, обладающего влагостойкостью, разнообразием оттенков и интересным рисунком текстуры https://kpdkamen.ru/articles/chto-takoe-stroitelnyj-mramor/ JamesCig

Магазин с ежедневно обновляемым ассортиментом, в котором представлены разные товарные тренды https://mollix.ru/catalog/zhenskaya_odezhda/natelnoe_bele/bele/bodi/126229/?oid=126230 Продает оптом и по дропшиппингу https://mollix.ru/catalog/zhenskaya_odezhda/natelnoe_bele/bele/komplekty_belya/?PAGEN_1=4 Особенность компании – тщательная проверка продукции на брак и качественная упаковка, которая предотвращает появление дефектов во время транспортировки https://mollix.ru/catalog/zhenskaya_odezhda/natelnoe_bele/bele/komplekty_belya/126455/?oid=126456 При каждой отгрузке для заказчика формируются фото-отчеты https://mollix.ru/catalog/zhenskaya_odezhda/natelnoe_bele/bele/komplekty_belya/126475/ Интернет-магазин оптовых товаров для маркетплейсов и бизнеса из Китая, но на базе собственного склада в Москве https://mollix.ru/catalog/zhenskaya_odezhda/natelnoe_bele/pizhamy/127268/?oid=127269 Стаж работы более 7 лет, специализируются на продаже топовых и популярных товаров https://mollix.ru/catalog/zhenskaya_odezhda/natelnoe_bele/bele/komplekty_belya/126157/ Наша компания является проверенным поставщиком качественных товаров для маркетплейсов из Китая https://mollix.ru/catalog/zhenskaya_odezhda/natelnoe_bele/sorochki/128692/ Наш каталог достаточно велик https://mollix.ru/catalog/zhenskaya_odezhda/bryuki_dzhinsy1/dzhinsy3/128590/?oid=128591 Большой выбор представленного ассортимента – это возможность для каждого клиента организовать стабильные продажи, тем самым постоянно увеличивая доход https://mollix.ru/catalog/zhenskaya_odezhda/natelnoe_bele/bele/komplekty_belya/126211/ Так, мы предлагаем только самые востребованные позиции, пользующиеся большим спросом https://mollix.ru/catalog/zhenskaya_odezhda/natelnoe_bele/pizhamy/128660/?oid=128661 3 https://mollix.ru/catalog/zhenskaya_odezhda/natelnoe_bele/bele/komplekty_belya/126493/?oid=126494 Стоимость доставки https://mollix.ru/catalog/zhenskaya_odezhda/natelnoe_bele/sorochki/126283/?oid=126284 Она может быть включена в цену товара или оплачиваться отдельно https://mollix.ru/catalog/zhenskaya_odezhda/natelnoe_bele/sorochki/128694/?oid=128695 Просчитывайте, насколько доставка увеличит стоимость товара: эти расходы могут свести на нет изначально низкую цену https://mollix.ru/catalog/zhenskaya_odezhda/bryuki_dzhinsy1/dzhinsy3/128582/?oid=128583 Будущий поставщик обязан предоставить любые требуемые документы (лицензии, сертификаты, декларации соответствия продукции требованиям и так далее) https://mollix.ru/catalog/zhenskaya_odezhda/natelnoe_bele/sorochki/126295/?oid=126296 Но есть и минусы:

Диваны под заказ по индивидуальным размерам https://micevol.ru/golicyno Цена: 117 629 ? В корзинуПодробнее https://micevol.ru/perxushkovo Цена: 124 294 ? В корзинуПодробнее https://micevol.ru/ Есть готовый эскиз - проект стильной мебели? Технологи фабрики нарисуют мебель вашей мечты и отправят на производство https://micevol.ru/nemchinovka Категория ткани – это ценовой диапазон, к которому относится конкретная коллекция https://micevol.ru/vnukovo Цена ткани формируется из многих факторов, таких как: состав, эксплуатационные качества, плотность, колор-карта, регион производства и многие другие https://micevol.ru/perxushkovo Мягкое панно МДФ с подсветкой https://micevol.ru/shkafi-kupe-na-zakaz JerryWaw

Из примеров наших работ вы можете выбрать готовый вариант кухни для своего дома https://mebelharmony.ru/furnitura Анастасия, Омск, ул https://mebelharmony.ru/stoleshn Учебная https://mebelharmony.ru/about-company Товар: мебель на заказ https://mebelharmony.ru/privacy Кухни на заказ в Хабаровске https://mebelharmony.ru/privacy Кухня МИЛАН КАШЕМИР https://mebelharmony.ru/stoleshn Возможность адаптировать уже существующие варианты техники или предметы обстановки к новому гарнитуру https://mebelharmony.ru/furnitura Настоящие профессионалы легко справляются с этой задачей в кратчайшие сроки и не требуют чрезмерно высокой платы за работу https://mebelharmony.ru/fasady Индивидуальный подход к делу https://mebelharmony.ru/oplata Можно создать футуристичную кухню в стиле хай-тек с неоновой подсветкой или воплотить в жизнь мечту каждого кулинара об работает только со своими замерами, выполненными с использованием точного и современного оборудования https://mebelharmony.ru/oplata