龙空技术网

10、Vue发送AJAX请求

动漫IT 198

前言:

而今你们对“js的ajax文件上传插件”大概比较注意,小伙伴们都需要分析一些“js的ajax文件上传插件”的相关文章。那么小编在网上搜集了一些有关“js的ajax文件上传插件””的相关文章,希望看官们能喜欢,朋友们快快来学习一下吧!

基础知识普及

在使用Ajax跨域请求时,如果设置Header的ContentType为application/json,会分两次发送请求。第一次先发送Method为OPTIONS的请求到服务器,这个请求会询问服务器支持哪些请求方法(GET,POST等),支持哪些请求头等等服务器的支持情况。等到这个请求返回后,如果原来我们准备发送的请求符合服务器的规则,那么才会继续发送第二个请求,否则会在Console中报错。为什么在跨域的时候设置ContentType为application/json时会请求两次?其实JQuery的文档对此有做说明。

对于JSONP的请求,后端可以不返回数据,但是必须返回一个方法名,并且带括号;

vue-resources

vue-resource是Vue.js的一款插件,它可以通过XMLHttpRequest或JSONP发起请求并处理响应。也就是说,$.ajax能做的事情,vue-resource插件一样也能做到,而且vue-resource的API更为简洁。另外,vue-resource还提供了非常有用的inteceptor功能,使用inteceptor可以在请求前和请求后附加一些行为,比如使用inteceptor在ajax请求时显示loading界面。

文档地址:

全局配置

文档地址:

// 全局设置

Vue.http.options.root = '/root' // 设置全局http请求域名

// Vue.http.headers.common['Authorization'] = 'Basic YXBpOnBhc3N3b3Jk'; // 设置全局http请求账号密码

Vue.http.options.emulateJSON = true; // 设置全局的表单数据类型为普通表单提交application/x-www-form-urlencoded

// 局部设置

new Vue({

http: {

root: '/root',

headers: {

Authorization: 'Basic YXBpOnBhc3N3b3Jk'

}

}

})

GET请求示例

methods: {

get() {

this.$http.get('api/json/',{}).then((result) => {

console.log(result)

}, (result) => {

console.log(result)

});

}

}

POST请求示例

methods: {

post() {

// this.$http.post('api/json/',{},{emulateJSON:true}).then((result) => {

this.$http.post('api/json/',{},{}).then((result) => {

console.log(result)

}, (result) => {

console.log(result)

});

}

}

JSONP请求示例

# 后端

class json(View):

def get(self, request):

print(self.request.GET)

callback = self.request.GET.get('callback')

data = {

"username": 'cce',

"password": 'caichangen'

}

return HttpResponse('%s(%s)' % (callback, data))

// 前端

methods: {

axios() {

this.$http.jsonp('api/json/'').then((result) => {

console.log(result.body)

});

}

}

标签: #js的ajax文件上传插件 #ajaxheader设置编码 #jqueryajax怎么发送blob #ajax提交后提示信息