作者简介 :陈为平,携程市场部前端工程师,目前主要负责“携程运动”项目的大前端相关工作。
前段时间在忙开发携程运动项目和相应的微信小程序,其中和后端通信犹为频繁。get、post请求方法是很多前端童鞋使用最频繁的;websocket在11年盛行后方便了客户端和服务器之间传输,……and so on ,除了这些,还有很多我们不常使用的其他方式,但是在实际的业务场景中却真实需要。
本文总结了目前前端使用到的数据交换方式,阐述了业务场景中如何选择适合的方式进行数据交换( form ,xhr, fetch, SSE, webstock, postmessage, web workers等),并列举了一些示例代码, 可能存在不足的地方,欢迎大家指正。
本文用到的源代码都放在Github上,点击可直达。
关于HTTP协义基础可以参考阮一峰老师的《HTTP协议入门》一文。
前端经常使用的HTTP协议相关(1.0 / 1.1)
method
enctype
enctype示例说明( form , ajax, fetch 三种示例 )
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>enctype</title>
<style>
.box{border: 1px solid #ccc;padding:20px;}
.out{background: #efefef; padding:10px 20px; margin-top: 20px;}
</style>
<script src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-2.2.3.min.js"></script>
<script>
$(function(){
$('#b1').on('click', function(){
$.ajax({
method: "POST",
contentType:'application/x-www-form-urlencoded;charset=UTF-8',
url: "form_action.php",
data: {username: "John", password: "Boston" }
}).done(function( msg ) {
$('#msg1').html(msg);
});
});
$('#f1').on('click', function(){
fetch("form_action.php", {
method: "POST",
credentials: 'include', //带上cookie
headers: {
"Content-Type": "application/x-www-form-urlencoded;charset=UTF-8"
},
body: "username=John&password=Boston"
})
.then(function(response){
return response.text();
})
.then(function(msg) {
$('#msg1').html(msg);
}, function(e) {
alert("Error submitting form!");
});
});
$('#b2').on('click', function(){
var formData = new FormData(document.querySelector("#data2"));
$.ajax({
method: "POST",
processData:false, //无需让jquery正处理一下数据
contentType:false, //已经是formData就默认为 multipart/form-data
cache: false,
url: "form_action.php",
data: formData
}).done(function( msg ) {
$('#msg2').html(msg);
});
});
$('#f2').on('click', function(){
var formData = new FormData(document.querySelector("#data2"));
fetch("form_action.php", {
method: "POST",
headers: {
"Content-Type": "multipart/form-data;charset=UTF-8"
},
body: formData
})
.then(function(response){
return response.text();
})
.then(function(msg) {
$('#msg2').html(msg);
}, function(e) {
alert("Error submitting form!");
});
});
$('#b3').on('click', function(){
$.ajax({
method: "POST",
contentType:'application/json;charset=UTF-8',
url: "form_action.php",
data: JSON.stringify({username: "John", password: "Boston" })
}).done(function( msg ) {
$('#msg3').html(msg);
});
});
$('#f3').on声明:所有来源为“聚合数据”的内容信息,未经本网许可,不得转载!如对内容有异议或投诉,请与我们联系。邮箱:marketing@think-land.com
通过企业关键词查询企业涉讼详情,如裁判文书、开庭公告、执行公告、失信公告、案件流程等等。
IP反查域名是通过IP查询相关联的域名信息的功能,它提供IP地址历史上绑定过的域名信息。
结合权威身份认证的精准人脸风险查询服务,提升人脸应用及身份认证生态的安全性。人脸风险情报库,覆盖范围广、准确性高,数据权威可靠。
全国城市和站点空气质量查询,污染物浓度及空气质量分指数、空气质量指数、首要污染物及空气质量级别、健康指引及建议采取的措施等。
输入手机号和拦截等级,查看是否是风险号码