莫小耿

积少成多


  • 首页

  • 标签

  • 分类

  • 归档

  • 关于

ajax中post和get的区别

发表于 2018-03-26 | 分类于 前端 , JavaScript

前言

欢迎大家去我的网站查看

ajax中post和get的区别

get和post都是向服务器发送一种请求,只是发送机制不同
1 GET请求会将参数跟在URL后进行传递,而POST请求则是作为HTTP消息的实体内容发送给WEB服务器。
2.首先是”GET方式提交的数据最多只能是1024字节”,Post传输的数据量大,可以达到2M。
3.get方式请求数据会被浏览器缓存起来,因此其他人就可以从浏览器的历史记录中读取到这些数据,例如账号密码等。在某种情况下,get方式会带来严重的安全问题。而post方式相对来说就可以避免这些问题。
4.Post请求必须设置Content-Type值为application/x-form-www-urlencoded;
5.发送请求时,因为Get请求的参数都在url里,所以send函数发送的参数为null,而Post请求在使用send方法时,却需赋予其参数;

在服务器端的区别:

在客户端使用get请求时,服务器端使用Request.QueryString来获取参数,而客户端使用post请求时,服务器端使用Request.Form来获取参数.
HTTP标准包含这两种方法是为了达到不同的目的。POST用于创建资源,资源的内容会被编入HTTP请示的内容中。例如,处理订货表单、在数据库中加入新数据行等。

当请求无副作用时(如进行搜索),便可使用GET方法;当请求有副作用时(如添加数据行),则用POST方法。一个比较实际的问题是:GET方法可能会产生很长的URL,或许会超过某些浏览器与服务器对URL长度的限制。

若符合下列任一情况,则用POST方法:

  • 请求的结果有持续性的副作用,例如,数据库内添加新的数据行。
  • 若使用GET方法,则表单上收集的数据可能让URL过长。
  • 要传送的数据不是采用7位的ASCII编码。

若符合下列任一情况,则用GET方法:

  • 请求是为了查找资源,HTML表单数据仅用来帮助搜索。
  • 请求结果无持续性的副作用。
  • 收集的数据及HTML表单内的输入字段名称的总长不超过1024个字符。

    下面用代码来说明两者的区别:

    post请求

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    function postMethod(){

    var xhr = new createXHR();

    var userName = document.getElementById("userName").value;
    var age = document.getElementById("age").value;
    var data = "userName=" + encodeURTComponent( userName ) + "&age=" + encodeURTComponent( age );

    //不用担心缓存问题
    xhr.open( "post", "example.php", true );

    //必须设置,否则服务器端收不到参数
    xhr.setRequestHeader( "Content-Type", "application/x-www-form-urlencoded" );

    xhr.onreadystatechange = function(){

    if( xhr.readyState = 4 && xhr.status == 200 ){
    document.getElementById("result").innerHTML = xhr.responseText;
    }
    }

    //发送请求,要data数据
    xhr.send( data );

    }

git请求

function getMethod(){

var xhr = new createXHR();

var userName = document.getElementById("userName").value;
var age = document.getElementById("age").value;

//添加参数,以求每次访问不同的url,以避免缓存问题
xhr.open( "get", "example.php?userName=" + encodeURTComponent( userName ) + "&age=" + encodeURTComponent( age ) + "&random=" + Math.random(), true );

xhr.onreadystatechange = function(){

    if( xhr.readyState == 4 && xhr.status == 200 ){

        document.getElementById("result").innerHTML = xhr.responseText;
    }
}

//发送请求,参数为null
xhr.send( null );

}

ajaxfileupload上传

发表于 2018-03-20 | 分类于 前端 , JavaScript

前言

在工作中使用了Jquery的ajaxFileUpload的图片上传插件,还有工作中遇到的问题,接下来问大家介绍下这个使用方法

引入文件

1
2
<script type="text/javascript" src="../js/jquery-1.11.3.js"></script>
<script type="text/javascript" src="../js/ajaxfileupload.js"></script>

html

我在这里是使用的bootstrap的模态框

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<div class="modal fade" id="upFile" tabindex="-1" role="dialog" aria-labelledby="myModalLabel">
<div class="modal-dialog" style="max-width: 600px;">
<div class="modal-content">
<div class="modal-header">
<h4 class="modal-title" style="color:#31708F">流量产品图标上传</h4>
</div>
<div class="modal-body" style="padding:20px 100px">
<div>
请选择文件:
<input class="fileinput" type="file" id="Filedata" name="Filedata" style="display: inline-block;">
</div>
</div>
<div class="modal-footer">
<button name="fileuploadbtn" id="fileuploadbutton" class="btn btn-success btn-sm" onclick="return fileForm_Validator(this)">上传</button>
<button data-dismiss="modal" class="btn btn-default" type="button">关闭</button>
</div>
</div>
</div>
</div>

js方法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
function fileForm_Validator(o){
var filedata = $("#Filedata").val();
// 获得截取文件路径后的文件名称
filedata = filedata.substr(filedata.lastIndexOf("\\")+1);
var str = filedata;
// 正则判断是否是图片的格式
var sear = new RegExp('.+(.JPEG|.jpeg|.JPG|.jpg|.GIF|.gif|.BMP|.bmp|.PNG|.png)$');
if($('#Filedata').val() == ''||$('#Filedata').val() == 'undefined'||$('#Filedata').val() == undefined){
alert('无可上传文件');
}else if(sear.test(str)) {
//把文件名赋值给要提交的内容
$("#accnbrs").val(filedata);
$.ajaxFileUpload({
url:'/cyt/flowProduct/uploadIcon', //后台方法的路径
type: "POST",
secureuri: false, //是否需要安全协议,一般设置为false
fileElementId: 'Filedata', //文件上传域的ID
dataType: 'json',
data:{'filedata':filedata},
success: function (data){
if(data.result==1){
alert('上传成功');
}else{
alert('上传失败');
}
}
})
}else{
alert('请检查上传文件类型是否为图片格式');
return false;
}
}

遇到的问题

上传成功之后返回的数据部署json格式 而是字符串下面需要转换一下。谷歌返回的数据不一样需要特殊处理一下


success: function (data){
        var data =data;
        // 判断是否是谷哥浏览器  对data进行截取
        if(navigator.userAgent.indexOf("Chrome") > -1){
            data= data.match(/\{[^\}]+\}/)[0]; // 直截取{}中的内容
        }
        dataJson = JSON.parse(data);
        if(dataJson.result==1){
            $('#upFile').modal('hide');
            $("#iconUrl").val(dataJson.resultMsg);
            alert('上传成功');
        }else{
            alert(dataJson.resultMsg);
        }
    }

sort用法总结

发表于 2018-03-01 | 分类于 前端 , JavaScript

sort用法总结

阅读全文 »

nginx配置详情

发表于 2018-02-27 | 分类于 nginx

webpack

阅读全文 »

webpack的静态资源集中输出

发表于 2018-02-13 | 分类于 webpack

webpack

阅读全文 »

webpack执行npm run server报错解决方法

发表于 2018-02-13 | 分类于 webpack

webpack

阅读全文 »

mixins混入选项操作

发表于 2018-01-30 | 分类于 vue

概念

mixins 选项接受一个混合对象的数组。这些混合实例对象可以像正常的实例对象一样包含选项,他们将在 Vue.extend() 里最终选择使用相同的选项合并逻辑合并。

用途

Mixins一般有两种用途:

1、在你已经写好了构造器后,需要增加方法或者临时的活动时使用的方法,这时用混入会减少源代码的污染。
2、很多地方都会用到的公用方法,用混入的方法可以减少代码量,实现代码重用。

基本用法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>mixins混入选项操作</title>
<script src="js/vue.js"></script>
</head>

<body>
<div id="app">
<p>num:{{ num }}</p>
<P><button @click="add">增加</button></P>
</div>
<script type="text/javascript">
// 临时添加需求 需要混入
var addlogin={
updated:function(){
console.log("数据放生变化,变化成"+this.num+".");
}
};
// 构造器
var app=new Vue({
el:'#app',
data:{
num:1
},
methods:{
add:function(){
this.num++;
}
},
updated:function(){
console.log('我是原生的undated');
},
mixins:[addlogin] // 混入 可以混入多个
// 混入先执行、原生的后执行
})
</script>
</body>

</html>

全局API混入方式

全局混入的执行顺序要前于混入和构造器里的方法

1
2
3
4
5
Vue.mixin({
updated:function(){
console.log('我是全局被混入的');
}
})

组件

混合 (mixins) 是一种分发 Vue 组件中可复用功能的非常灵活的方式。混合对象可以包含任意组件选项。当组件使用混合对象时,所有混合对象的选项将被混入该组件本身的选项。
示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
// 定义一个混合对象
var myMixin = {
created: function () {
this.hello()
},
methods: {
hello: function () {
console.log('hello from mixin!')
}
}
}

// 定义一个使用混合对象的组件
var Component = Vue.extend({
mixins: [myMixin]
})

var component = new Component() // => "hello from mixin!"

Vue-cli脚手架安装及结构介绍

发表于 2018-01-21 | 分类于 vue

vue-cli脚手架

阅读全文 »

GIT常用命令总结

发表于 2018-01-17 | 分类于 GIT

git基本命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
git add 将想要快照的内容写入缓存区
git status -s "AM" 状态的意思是,这个文件在我们将它添加到缓存之后又有改动
git commit -m '第一次版本提交' -m选项添加备注信息
git clone url 使用 git clone 拷贝一个 Git 仓库到本地
git diff 查看执行 git status 的结果的详细信息
  尚未缓存的改动:git diff
  查看已缓存的改动: git diff --cached
  查看已缓存的与未缓存的所有改动:git diff HEAD
  显示摘要而非整个 diff:git diff --stat
git commit -a 跳过git add 提交缓存的流程
git reset HEAD 用于取消已缓存的内容
git rm file
  git rm 会将条目从缓存区中移除。这与 git reset HEAD 将条目取消缓存是有区别的。
  "取消缓存"的意思就是将缓存区恢复为我们做出修改之前的样子。
  默认情况下,git rm file 会将文件从缓存区和你的硬盘中(工作目录)删除。
git mv 重命名磁盘上的文件 如 git mv README README.md

git push -u origin master 提交代码

git 分支管理

创建分支命令 git branch (branchname) 列出分支 git branch
切换分支命令 git checkout (branchname)
合并分支 git merge (branchname)
创建新分支并立即切换到该分支下 git checkout -b (branchname)
删除分支命令 git branch -d (branchname)
ps:状态 uu 表示冲突未解决 可以用 git add 要告诉 Git 文件冲突已经解决

更改提交的操作

1
2
  git reset //回溯历史版本
  git reset --hrad //回溯到指定状态,只要提供目标时间点的哈希值

修改提交信息 git commit –amend

  压缩历史 git rebase -i 错字漏字等失误称作typo
  根据以前的步骤在GitHub上创建仓库,应于本地的仓库名相同 GitHub上面创建的仓库的路径为git@github.com: 用户名/仓库名.git
  git remote add eee git@github.com: 用户名/仓库名.git //添加远程仓库,并将git@github.com: 用户名/仓库名.git远程仓库的名称改为eee
  git push -u eee master //推送至远程仓库 master分支下 -u 参数可以在推送的同时,将eee仓库的master分支设置为本地仓库的当前分
  支的的upstream(上游)。添加这个参数,将来运行git pull命令从远程仓库获取内容时,本地仓库的这个分支就可以直接从eee的master
分支中获取内容
  git checkout -b feature d eee/feature d //获取远程的feature d分支到本地仓库,-b参数后面是本地仓库中新建的仓库的名称
  git pull eee feature d //将本地的feature d分支更新为最新状态
  在GitHub上面查看两个分支之间的差别,只需要在地址栏中输入http://github.com/用户名/仓库名/分支1...分支2

查看日志版本

1
2
3
git log 命令列出历史提交记录
git log --oneline 查看历史记录的简洁的版本
git log --oneline --graph 查看历史中什么时候出现了分支、合并

标签

为软件发布创建标签是推荐的。这个概念早已存在,在 SVN 中也有。你可以执行如下命令创建一个叫做 1.0.0 的标签:
git tag 1.0.0 1b2e1d63ff
1b2e1d63ff 是你想要标记的提交 ID 的前 10 位字符。可以使用下列命令获取提交 ID:
git log
你也可以使用少一点的提交 ID 前几位,只要它的指向具有唯一性

提取远程仓库代码

1
2
git fetch  从远程仓库下载新分支与数据
git pull  从远端仓库提取数据并尝试合并到当前分支

###
参考 https://www.cnblogs.com/hexiaobao/p/8134829.html
https://www.cnblogs.com/lhxiaosoft/p/6400812.html

一台电脑上使用多个git账号

发表于 2018-01-17 | 分类于 GIT

git操作总结

阅读全文 »
12

Geng Hong Shuo

技术博客

20 日志
10 分类
13 标签
RSS
GitHub CSDN
© 2017 — 2018 Geng Hong Shuo
由 Hexo 强力驱动
|
主题 — NexT.Gemini v5.1.4