Javascript - Vue - 请求
本地增删查的一个例子
<div class="panel panel-primary">
<div class="panel-heading">
<h3 class="panel-title">新增</h3>
</div>
<div class="panel-body form-inline">
<label>
id:<input type="text" class="form-control" v-model="obj.id" />
</label>
<label>
name:<input type="text" class="form-control" v-model="obj.name" />
</label>
<input type="button" value="add" class="btn btn-primary" @click="add" />
<label>
search:<input type="text" class="form-control" v-model="keyWords"/>
</label>
</div>
</div>
<table class="table table-striped table-bordered table-hover table-condensed">
<tr><th>id</th><th>name</th><th>createTime</th><th>opration</th></tr>
<!--//呈现的数据由vue对象内部维护的search函数提供,当在搜索框输入数据后,vue对象内部数据keyWords发生变化,则会自动调用search进行数据过滤-->
<tr v-for="obj in search(keyWords)" :key="obj.id"><td>{{obj.id}}</td><td>{{obj.name}}</td><td>{{obj.time}}</td><td><a href="#" @click.prevent="del(obj.id)">删除</a></td></tr>
</table>
</div>
el: "#box",
data: {
keyWords: "",
obj: { id: null, name: "", time: null },
list: [
{ id: 1, name: "sam",time:new Date() },
{ id: 2, name: "leo", time: new Date() },
{ id: 3, name: "korn", time: new Date() }
]
},
methods: {
add: function () {
var id = this.obj.id;
var name = this.obj.name;
this.list.push({ id: id, name: name,time:new Date() });
},
del: function (id) {
var index=this.list.findIndex((item) => {
if (item.id == id) return true;
});
this.list.splice(index, 1);
},
search: function (keyWords) {
return this.list.filter((item,index) => {
if (item.name.includes(keyWords)) {
return item;
}
});
}
}
});
向服务端发起请求
axios
这是官方推荐的新的插件,用于客户端向服务端发送请求。可在axios下载。
{{msg}}
<button @click="sendGet">GetInfo</button>
}
},
methods: {
sendGet: function () {
var self=this;
var getObj=axios.get("http://localhost:53385/Handler.ashx", {
params: self.sendData
});
var endObj= getObj.then(function (response) {
self.msg = response.data;
});
endObj.catch(function (error) {
self.msg = error.status + error.statusText;
});
},
sendPost: function () {
var self = this;
var postObj = axios.post("http://localhost:53385/Handler.ashx", self.sendData);
var endObj=postObj.then(function (response) {
self.msg = response.data;
});
endObj.catch(function (error) {
self.msg = error.status + error.statusText;
});
}
}
});
</script>
服务端
{
public void ProcessRequest(HttpContext context)
{
context.Response.ContentType = "text/plain";
context.Response.Write("OK");
context.Response.End();
}
}
增删改查实例
<div class="panel panel-primary">
<div class="panel-heading">
<h3 class="panel-title">添加</h3>
</div>
<div class="panel-body form-inline">
<label>
name:<input type="text" class="form-control" v-model="name" />
</label>
<input type="button" value="新增" class="btn btn-primary" @click="add" />
</div>
</div>
<table class="table table-bordered table-hover table-striped">
<tr>
<th>ID</th>
<th>Name</th>
<th>Date</th>
<th>Operation</th>
</tr>
<tr v-for="obj in list" :key="obj.ID">
<td>
{{obj.ID}}
</td>
<td>
{{obj.Name}}
</td>
<td>
{{obj.Date}}
</td>
<td>
<a href="#" :id="obj.ID">编辑</a>
</td>
</tr>
</table>
</div>
服务端需要创建一个模拟数据库存储数据的在内存中可以保持全局唯一的数据对象以便可以在这个对象列表里持续添加数据
{
public int ID { get; set; }
public string Name { get; set; }
public DateTime Date { get; set; }
public static List<Employee> GlobalList { get; set; } //全局唯一的员工列表
static Employee()
{
GlobalList= new List<Employee>
{
new Employee
{
ID = 1,
Date = new DateTime(),
Name = "寒食"
},
new Employee
{
ID = 2,
Date = new DateTime(),
Name = "山魈"
},
new Employee
{
ID = 3,
Date = new DateTime(),
Name = "李隼"
}
};
}
}
查询
客户端代码
el: "#box",
data: {
name:null,
list: [
{ ID: 1, Name: "sam", Date: new Date() }
]
},
methods: {
getServerData: function () {
var self = this;
axios.get("http://localhost:53385/getAllList.ashx").then(function (response) {
self.list = response.data;
});
}
},
created: function () { //vue对象创建完成后开启查询
this.getServerData();
}
});
服务端代码
{
context.Response.ContentType = "text/plain";
string listStr = JsonConvert.SerializeObject(Employee.GlobalList);
context.Response.Write( listStr);
context.Response.End();
}
新增
客户端代码
el: "#box",
data: {
name:null,
list: [
{ ID: 1, Name: "sam", Date: new Date() }
]
},
methods: {
add: function () {
var self = this;
axios.post("http://localhost:53385/addData.ashx", { name: this.name }).then(function (response) {
self.list = response.data;
});
}
}
});
服务端代码
{
context.Response.ContentType = "text/plain";
//客户端axios对象的post方法模拟了post提交方式,但它提交的是json格式的数据,不能用request.form[]来获取数据
//以下通过读取流数据来获取客户端提交的json数据
context.Response.Cache.SetCacheability(HttpCacheability.NoCache);
using (var reader = new System.IO.StreamReader(context.Request.InputStream))
{
String jsonData = reader.ReadToEnd();
var em = new Employee { Date = new DateTime(), Name = JsonConvert.DeserializeObject<Employee>(jsonData).Name };
var list = Employee.GlobalList;
list.Add(em);
var message = string.IsNullOrEmpty(jsonData) ? "error" : JsonConvert.SerializeObject(list);
context.Response.Write(message);
context.Response.End();
}
}
删改略……
Javascript - Vue - 请求的更多相关文章
- Javascript异步请求你能捕获到异常吗?
Javascript异步请求你能捕获到异常吗? 异常处理是程序发布之前必须要解决的问题,不经过异常处理的应用会让用户对产品失去信心.在异常处理中,我们一贯的做法是按照函数调用的次序,将异常从数据访问层 ...
- 一个vue请求接口渲染页面的例子
new Vue({ el:'#bodylist', data: { list: [ { "type_id": "1", "type_name" ...
- JavaScript获取请求参数
<script type="text/javascript"> //获取请求参数 function paramsMap() { var url = window.loc ...
- Javascript - Vue - vue对象
vue提供了一整套前端解决方案,可以提升企业开发效率 vue的处理过程 app.js 项目入口,所有请求最先进入此模块进行处理 route.js 由app.js调用,处理路由的分发 controlle ...
- Javascript - Vue - 在vscode里使用webpack
cnpm(node package manager)和webpack模块 npm是运行在node.js环境下的包管理工具,使用npm可以很快速的安装前端文件里需要依赖的那些项目文件,比如js.css文 ...
- Javascript - Vue - 路由
vue router.js 下载:vue-router.js, 该文件依赖于vue.js <script src="Scripts/vue-2.4.0.js">< ...
- Javascript - Vue - webpack + vue-cil
cnpm(node package manager)和webpack模块 npm是运行在node.js环境下的包管理工具(先安装node.js,再通过命令 npm install npm -g 安装n ...
- Javascript - Vue - webpack中的组件、路由和动画
引入vue.js 1.cnpm i vue -S 2.在mian.js中引入vue文件 import Vue from "vue"//在main.js中使用这种方式引用vue文件时 ...
- VUE请求本地数据的配置json-server
VUE开发请求本地数据的配置,早期的vue-lic下面有dev-server.js和dev-client.js两文件,请求本地数据在dev-server.js里配置,最新的vue-webpack-te ...
随机推荐
- PAT甲题题解-1112. Stucked Keyboard (20)-(map应用)
题意:给定一个k,键盘里有些键盘卡住了,按一次会打出k次,要求找出可能的坏键,按发现的顺序输出,并且输出正确的字符串顺序. map<char,int>用来标记一个键是否为坏键,一开始的时候 ...
- 互评Final版本——可以低头,但没必要——取件帮
基于NABCD评论作品,及改进建议 1.根据(不限于)NABCD评论作品的选题; (1)N(Need,需求) 当今大部分在校学生由于各种原因懒于亲自去取快递,而总麻烦身边人也不是长久之计.而有些同学需 ...
- Manjaro Linux 没有声音
在Multimedia中的PulseAudio Volume Control中的设置可以解决
- word count程序,以及困扰人的宽字符与字符
一个Word Count程序,由c++完成,有行数.词数.能完成路径下文件的遍历. 遍历文件部分的代码如下: void FindeFile(wchar_t *pFilePath) { CFileFin ...
- Objective-C 语言特点/特性
Objective-C中 1.所有的类都必须继承自NSObject. 2.所有对象都是指针的形式. 3.用self代替this. 4.使用id代替void*. 5.使用nil表示NULL, 6.只支持 ...
- week4
History:Commercialization and Growth course Explosive Growth of the Internet and Web The Year of the ...
- Linux用户和用户组管理
该内容来摘自于鸟叔的Linux私房菜. Linux的每个用户包含两个ID,一个是用户ID,一个是用户组ID.系统会根据/etc/passwd和/etc/group的设定来决定用户的访问权限.下面对用户 ...
- 4 vuex的安装
安装可以看,引入又问题https://blog.csdn.net/u014196765/article/details/78022065?locationNum=9&fps=1(引入) htt ...
- MacOS 如何剪切文件
MacOS 如何剪切文件 MacOS 剪切文件 command + C 复制 command + V 粘贴 删除 & 粘贴 在 Windows中 Ctrl + X 是剪切,MacOS中没有剪切 ...
- Ubuntu17安装Jenkins
Java安装 Jenkins基于Java, 所以需要先安装java. Linux下安装java只要配置java环境变量即可. 首先,解压java到相应目录,我一般习惯把安装的软件放到目录/usr/lo ...