在浏览器执行js脚本的两种方式

简介: 【10月更文挑战第20天】本文介绍了在浏览器中执行HTTP请求的两种方式:`fetch`和`XMLHttpRequest`。`fetch`支持GET和POST请求,返回Promise对象,可以方便地处理异步操作。`XMLHttpRequest`则通过回调函数处理请求结果,适用于需要兼容旧浏览器的场景。文中还提供了具体的代码示例。

在浏览器执行js脚本的两种方式
15/100
发布文章
weixin_42551921
未选择文件

fetch请求get

在浏览器执行http请求,可以使用fetch函数;

fetch("url").then(response => response.text())
.then(data => console.log(JSON.parse(data)['status']))
.catch(error => console.error(error))

在这里插入图片描述
直接返回json数据:

fetch("url").then(response => response.json())
.then(data => console.log(data))
.catch(error => console.error(error))

执行两次:

fetch("https://1.com").then(response = >response.json()).then(data = >{
   
    let items = data.data.doc_list;
    items.forEach(item = >{
   
        if (item.doc_status == '4') {
   
            fetch("https://1.com").then(response = >console.log(response)).
            catch(error = >console.error(error))
        }
    })
}).
catch(error = >console.error(error))

定义这个技术,模拟手动删除数据:

for (let index = 1; index < 100; index++) {
   
 for(var t = Date.now();Date.now() - t <= 3000;);
    fetch("https://1.com/nshop/doc/getlist?sub_tab=2&pn=" + index + "&rn=10&query=&main_status=2&time_range=&buyout_show_type=1").then(response = >response.json()).then(data = >{
   
        let items = data.data.doc_list;
        console.log(items);
        if ( !! items) {
   
            items.forEach(item = >{
   
                if (item.doc_status == '4') {
   
                    fetch("https:/1.com/user/submit/newdocdelete?doc_id_str=" + item.doc_id + "&skip_fold_validate=1").then(response = >console.log(response)).
                    catch(error = >console.error(error))
                }
            })
        }
    }).
    catch(error = >console.error(error))
}

fetch请求post

// jsonplaceholder.typicode.com是一个测试网站
fetch('https://jsonplaceholder.typicode.com/users', {
   
  method: 'POST',
  headers: {
   
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({
   
    name: 'John Doe',
    email: 'johndoe@example.com',
  })
})
  .then(response => response.json())
  .then(data => console.log(data))
  .catch(error => console.error(error));

使用XMLHttpRequest

发起GET请求:

const xhr = new XMLHttpRequest();
xhr.open('GET', 'https://jsonplaceholder.typicode.com/users');
xhr.onload = () => {
   
  if (xhr.status === 200) {
   
    console.log(xhr.responseText);
  } else {
   
    console.error(`Error: ${
     xhr.status}`);
  }
};
xhr.send();

发送POST请求:

const xhr = new XMLHttpRequest();
xhr.open('POST', 'https://jsonplaceholder.typicode.com/users');
xhr.setRequestHeader('Content-Type', 'application/json');
xhr.onload = () => {
   
  if (xhr.status === 201) {
   
    console.log(xhr.responseText);
  } else {
   
    console.error(`Error: ${
     xhr.status}`);
  }
};
xhr.send(JSON.stringify({
   
  name: 'John Doe',
  email: 'johndoe@example.com',
}));

fetch请求get
在浏览器执行http请求,可以使用fetch函数;

fetch(“url”).then(response => response.text())
.then(data => console.log(JSON.parse(data)[‘status’]))
.catch(error => console.error(error))

在这里插入图片描述
直接返回json数据:

fetch(“url”).then(response => response.json())
.then(data => console.log(data))
.catch(error => console.error(error))

执行两次:

fetch("https://1.com").then(response = >response.json()).then(data = >{
let items = data.data.doc_list;
items.forEach(item = >{
if (item.doc_status == '4') {
fetch("https://1.com").then(response = >console.log(response)).
catch(error = >console.error(error))
}
})
}).
catch(error = >console.error(error))
定义这个技术,模拟手动删除数据:

for (let index = 1; index < 100; index++) {
for(var t = Date.now();Date.now() - t <= 3000;);
fetch("https://1.com/nshop/doc/getlist?sub_tab=2&pn=" + index + "&rn=10&query=&main_status=2&time_range=&buyout_show_type=1").then(response = >response.json()).then(data = >{
let items = data.data.doc_list;
console.log(items);
if ( !! items) {
items.forEach(item = >{
if (item.doc_status == '4') {
fetch("https:/1.com/user/submit/newdocdelete?doc_id_str=" + item.doc_id + "&skip_fold_validate=1").then(response = >console.log(response)).
catch(error = >console.error(error))
}
})
}
}).
catch(error = >console.error(error))
}
fetch请求post
// jsonplaceholder.typicode.com是一个测试网站
fetch('https://jsonplaceholder.typicode.com/users', {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({
name: 'John Doe',
email: 'johndoe@example.com',
})
})
.then(response => response.json())
.then(data => console.log(data))
.catch(error => console.error(error));
使用XMLHttpRequest
发起GET请求:

const xhr = new XMLHttpRequest();
xhr.open('GET', 'https://jsonplaceholder.typicode.com/users');
xhr.onload = () => {
if (xhr.status === 200) {
console.log(xhr.responseText);
} else {
console.error(Error: ${xhr.status});
}
};
xhr.send();
发送POST请求:

const xhr = new XMLHttpRequest();
xhr.open('POST', 'https://jsonplaceholder.typicode.com/users');
xhr.setRequestHeader('Content-Type', 'application/json');
xhr.onload = () => {
if (xhr.status === 201) {
console.log(xhr.responseText);
} else {
console.error(Error: ${xhr.status});
}
};
xhr.send(JSON.stringify({
name: 'John Doe',
email: 'johndoe@example.com',
}));

相关文章
|
1月前
|
移动开发 JavaScript 前端开发
一些处理浏览器兼容性问题的JavaScript库
这些库在处理浏览器兼容性问题方面都有着各自的特点和优势,可以根据具体的需求和项目情况选择合适的库来使用,从而提高代码的兼容性和稳定性,为用户提供更好的体验。同时,随着浏览器技术的不断发展,还需要持续关注和学习新的兼容性解决方案。
104 48
|
1月前
|
JavaScript 前端开发 数据处理
模板字符串和普通字符串在浏览器和 Node.js 中的性能表现是否一致?
综上所述,模板字符串和普通字符串在浏览器和 Node.js 中的性能表现既有相似之处,也有不同之处。在实际应用中,需要根据具体的场景和性能需求来选择使用哪种字符串处理方式,以达到最佳的性能和开发效率。
|
1月前
|
算法 开发者
Moment.js库是如何处理不同浏览器的时间戳格式差异的?
总的来说,Moment.js 通过一系列的技术手段和策略,有效地处理了不同浏览器的时间戳格式差异,为开发者提供了一个稳定、可靠且易于使用的时间处理工具。
35 1
|
1月前
|
机器学习/深度学习 自然语言处理 前端开发
前端神经网络入门:Brain.js - 详细介绍和对比不同的实现 - CNN、RNN、DNN、FFNN -无需准备环境打开浏览器即可测试运行-支持WebGPU加速
本文介绍了如何使用 JavaScript 神经网络库 **Brain.js** 实现不同类型的神经网络,包括前馈神经网络(FFNN)、深度神经网络(DNN)和循环神经网络(RNN)。通过简单的示例和代码,帮助前端开发者快速入门并理解神经网络的基本概念。文章还对比了各类神经网络的特点和适用场景,并简要介绍了卷积神经网络(CNN)的替代方案。
115 1
|
1月前
|
Web App开发 JavaScript 前端开发
使用 Chrome 浏览器的内存分析工具来检测 JavaScript 中的内存泄漏
【10月更文挑战第25天】利用 Chrome 浏览器的内存分析工具,可以较为准确地检测 JavaScript 中的内存泄漏问题,并帮助我们找出潜在的泄漏点,以便采取相应的解决措施。
252 9
|
2月前
|
JavaScript API
深入解析JS中的visibilitychange事件:监听浏览器标签间切换的利器
深入解析JS中的visibilitychange事件:监听浏览器标签间切换的利器
146 0
|
2月前
|
机器学习/深度学习 自然语言处理 前端开发
前端大模型入门:Transformer.js 和 Xenova-引领浏览器端的机器学习变革
除了调用API接口使用Transformer技术,你是否想过在浏览器中运行大模型?Xenova团队推出的Transformer.js,基于JavaScript,让开发者能在浏览器中本地加载和执行预训练模型,无需依赖服务器。该库利用WebAssembly和WebGPU技术,大幅提升性能,尤其适合隐私保护、离线应用和低延迟交互场景。无论是NLP任务还是实时文本生成,Transformer.js都提供了强大支持,成为构建浏览器AI应用的核心工具。
600 1
|
3月前
|
JavaScript 前端开发
js之浏览器对象|28
js之浏览器对象|28
|
4月前
|
机器学习/深度学习 人工智能 前端开发
【人工智能】利用TensorFlow.js在浏览器中实现一个基本的情感分析系统
使用TensorFlow.js在浏览器中进行情感分析是一个非常实用的应用场景。TensorFlow.js 是一个用于在JavaScript环境中训练和部署机器学习模型的库,使得开发者能够在客户端直接运行复杂的机器学习任务。对于情感分析,我们可以使用预先训练好的模型来识别文本中的积极、消极或中性情感。
124 4
【人工智能】利用TensorFlow.js在浏览器中实现一个基本的情感分析系统
|
4月前
|
机器学习/深度学习 存储 前端开发
实战揭秘:如何借助TensorFlow.js的强大力量,轻松将高效能的机器学习模型无缝集成到Web浏览器中,从而打造智能化的前端应用并优化用户体验
【8月更文挑战第31天】将机器学习模型集成到Web应用中,可让用户在浏览器内体验智能化功能。TensorFlow.js作为在客户端浏览器中运行的库,提供了强大支持。本文通过问答形式详细介绍如何使用TensorFlow.js将机器学习模型带入Web浏览器,并通过具体示例代码展示最佳实践。首先,需在HTML文件中引入TensorFlow.js库;接着,可通过加载预训练模型如MobileNet实现图像分类;然后,编写代码处理图像识别并显示结果;此外,还介绍了如何训练自定义模型及优化模型性能的方法,包括模型量化、剪枝和压缩等。
61 1