ajax如何返回json
很多同学在进行编程学习时缺乏系统学习的资料。本页面基于ajax如何返回json内容,从基础理论到综合实战,通过实用的知识类文章,标准的编程教程,丰富的视频课程,为您在ajax如何返回json相关知识领域提供全面立体的资料补充。同时还包含 android、a href、abap 的知识内容,欢迎查阅!
ajax如何返回json相关知识
-
ajax返回值 json 乱码 解决方案ajax的返回值一直乱码,试过各种ContentType设定utf-8的方法,就是搞不定,而且明明返回值是json字符串,一直出现ajax取得返回值类型为object。最后查资料发现,SpringMVC使用 @ResponseBody注解,返加字符串不做任何处理时,有可能会出现乱码问题。这是由于 StringHttpMessageConverter 类中,默认采用的字符集是 ISO-8859-1。public class StringHttpMessageConverter extends AbstractHttpMessageConverter<String> { public static final Charset DEFAULT_CHARSET = C
-
如何使用mock.js取代json-server模拟Ajax请求在我的课程里,我给大家推荐的模拟Ajax请求的方式采用了自己搭建服务器,访问json文件的方式,这种方式比较复杂,而且容易产生这样那样的问题,所以我在这里强烈推荐使用mock.js来取代json-server或者express。 mock.js的官网是:http://mockjs.com/ mock.js实现的思路跟json-server不同,它实现的方法是,拦截ajax请求,并返回随机数据。 在vue.js 项目里,遵循如下步骤使用mock.js: 第一步,安装mock.js 项目目录下安装 (c)npm install mockjs --save 第二步,项目里引用mock.js s
-
Spring Boot 返回 JSON 数据,一分钟搞定!在 WEB 项目中返回 JSON 数据是常见的交互形式,在 Spring Boot 中这一切都变得十分简单。So easy!!! 如何返回 JSON 数据? 在 Spring Boot 中返回 JSON 数据很简单,如下几步。 加入依赖 <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.0.4.RELEASE</version> </parent> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </de
-
springmvc 4.0 返回json数据基本配置<mvc:annotation-driven> <mvc:message-converters register-defaults="false"> <!-- 避免IE执行AJAX时,返回JSON出现下载文件 --> <bean id="fastJsonHttpMessageConverter" class="com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter"> <property name="supportedMediaTypes"> <list> <!-- 这里顺序不能反,一定先写text/html,不然ie下出现下载提示 --> <value>text/html;charset=UTF-8</value> <value>application/json;charset=UTF-8</value> </list> </pr
ajax如何返回json相关课程
ajax如何返回json相关教程
- 3.2 返回 json 类型 视图函数直接返回 json 数据是在微服务架构中常见的套路。这里 Django 程序只提供后端数据并不提供静态资源。针对返回 json 数据,在 Django 中专门定义了一个 JsonResponse 类用来生成 json 数据。它实际上是继承自 HttpResponse 类:# django/http/response.py# 忽略其他内容class JsonResponse(HttpResponse): """ 忽略注释部分内容 """ def __init__(self, data, encoder=DjangoJSONEncoder, safe=True, json_dumps_params=None, **kwargs): if safe and not isinstance(data, dict): raise TypeError( 'In order to allow non-dict objects to be serialized set the ' 'safe parameter to False.' ) if json_dumps_params is None: json_dumps_params = {} kwargs.setdefault('content_type', 'application/json') data = json.dumps(data, cls=encoder, **json_dumps_params) super().__init__(content=data, **kwargs)JsonResponse 类的使用和 HttpResponse 类一样简单,我们只需要把字典数据传给 JsonResponse 类进行实例化即可。但是字典数据中存在中文时候,会出现乱码,我们只需要在实例化 JsonResponse 时,多传入一个参数即可:# 在页面上会出现乱码def hello_world(request, *args, **kwargs): data = {'code': 0, "content": "返回中文字符串", "err_msg": ""} return JsonResponse(data)# 经过处理后的JsonResponsedef hello_world(request, *args, **kwargs): data = {'code': 0, "content": "返回中文字符串", "err_msg": ""} return JsonResponse(data, json_dumps_params={'ensure_ascii': False})请求结果:# 第一个不处理的 JsonResponse 返回[root@server ~]# curl "http://127.0.0.1:8881/hello/"{"code": 0, "content": "\u8fd4\u56de\u4e2d\u6587\u5b57\u7b26\u4e32", "err_msg": ""}# 使用第二个数据处理后的HttpResponse返回[root@server ~]# curl "http://127.0.0.1:8881/hello/"{"code": 0, "content": "返回中文字符串", "err_msg": ""}另外一种比较好的方式是,仿照 JsonResponse 类,定义一个支持返回包含中文 json 数据的 Response 类:# 忽略导入模块# 将原来支持的json_dumps_params参数固定写死成{'ensure_ascii':False}class JsonResponseCn(HttpResponse): """ 忽略注释部分内容 """ def __init__(self, data, encoder=DjangoJSONEncoder, safe=True, **kwargs): if safe and not isinstance(data, dict): raise TypeError( 'In order to allow non-dict objects to be serialized set the ' 'safe parameter to False.' ) kwargs.setdefault('content_type', 'application/json') data = json.dumps(data, cls=encoder, **{'ensure_ascii':False}) super().__init__(content=data, **kwargs)这样处理后,我们在和原来一样使用 JsonResponseCn 类来返回 json 数据即可,不用考虑返回的字典数据中是否包含中文字符:def hello_world(request, *args, **kwargs): data = {'code': 0, "content": "返回中文字符串", "err_msg": ""} return JsonResponseCn(data)
- 3.3 返回 JSON 格式的数据 客户端访问操作资源的 URI 时,服务端返回 JSON 格式的数据。例如:1. 获取特定的主题客户端获取 id 为 123 的主题信息,发出如下请求:GET /topics/123服务端返回 JSON 格式的数据:{ "title": "今天吃什么?", "content": "谢谢"}在返回的 JSON 数据中, title 表示主题的标题,content 表示主题的正文。2. 获取所有的主题客户端获取所有的主题信息,发出如下请求:GET /topics服务端返回 JSON 格式的数据:[ { "title": "今天吃什么?", "content": "谢谢" }, { "title": "今天下雨吗?", "content": "有谁知道" }] 返回的 JSON 数据是一个数组,数组包含 2 项元素,每个元素表示一个主题。
- 5. 解析 json 数据 编写web api,在写 post 请求接口时,通常将接口参数以 json 格式发送给服务端,request.json 保存了请求中的 json 数据,下面编写一个例子 request-json.py 解析 json 数据:from flask import Flask, requestapp = Flask(__name__)@app.route('/')def root(): file = open('api.html', encoding = 'utf-8') return file.read()@app.route('/api/addUser', methods = ['POST'])def addUser(): json = request.json print('JSON', json) print('name = %s' % json['name']) print('age = %s' % json['age']) return 'addUser OK'if __name__ == '__main__': app.run(debug = True)在第 4 行,编写路径 / 的处理函数 root(),它读取文件 api.html,将内容返回给浏览器。在第 9 行,编写路径 /api/addUser 的处理函数 addUser(),打印 request.json 中的参数 name 和 age,返回给浏览器 ‘addUser OK’。客户端使用 POST 方法提交请求 /api/addUser,在 Flask 中,需要指明 methods 为 ‘POST’。路径 / 返回 api.html,api.html 通过 ajax 调用服务端的 /api/addUser,内容如下:<script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.5.0/jquery.js"></script><h1 id='result'>result</h1><script>var data = JSON.stringify({'name':'zhangsan', 'age':'20'});$.ajax({ url: '/api/addUser', type: 'post', contentType:'application/json', data: data, success: function(data) { $("#result").html(data); }, error: function(e) { alert('ERROR') }});</script>在第 2 行,定义 id 为 result 的标签,用于显示调用结果;在第 4 行,设定 /api/addUser 的接口参数: name 和 age;在第 5 行,通过 jquery.ajax 调用服务端的 /api/addUser。请求调用成功时,回调 success 函数,将结果显示在 id 为 result 的标签中,如下所示:
- 4. 什么是 Ajax? 说这么多,那么什么是 Ajax 呢?简单来讲,Ajax 就是 JavaScript 基于 XMLHttpRequest 对象与服务端进行交互,向服务端发送一个请求,并且获取和处理服务器返回的内容。在这个过程中,我们可以使用 XML ,HTML 和 JSON 等格式的数据进行交互。并且,Ajax 拥有异步特质,我们可以在不刷新页面的情况下,通过交互数据,在页面上做局部的刷新等数据处理。
- 2.2 返回对象 JAVA 中的数据很多时候都是以 OOP 的形式存在的,如学生对象数据、老师对象数据、用户对象数据……那么,控制器中的方法能不能直接把数据以对象为单位写入响应包后返回给浏览器了?如下面的实例:@RequestMapping("/test02")@ResponseBodypublic User testJson01() { return new User("mk", "123");}打开浏览器,在地址栏上输入:http://localhost:8888/sm-demo/json/test02 。在浏览器你将看到如下图所示结果:抛异常了。对于出错,大家应该有预感。User 是 JAVA 语言中的类类型,对于浏览器而言对它的了解是一片空白。但是,为什么前面返回字符串时却可以了?那是因为字符串也是一种通用类型,浏览器没有不认识的道理,但是,User 类型,浏览器只能摸后脑勺了。如果想让浏览器识别出 User 类型数据。想想也简单,自己编码,把对象数据转换成字符串格式。@RequestMapping("/test03")@ResponseBodypublic String testJson03() { User user=new User("mk", "123"); return user.getUserName()+","+user.getUserPassword();}经过上面的修改后,浏览器中能显示出数据。但是,这里会有 2 个问题需要思考一下:如前所述,前后端分离最主要的思想是让前端承担一部分数据业务逻辑。一串没有特定格式的字符串传递给前端,真要交给 JS 处理,你还真不怕 JS 烦心,你叫它如何从中识别出谁是谁;直接返回值给浏览器之前,需要通过手工编码的方式把 OOP 数据格式转换成字符串,这番折腾,劳心劳力。好!先解决第一个问题。字符串数据类型是非结构化的,但是,可以把它转换成具有特定结构格式的 JSON 字符串。@RequestMapping("/test04")@ResponseBodypublic String testJson04() { User user = new User("mk", "123"); String json = "{\"userName\":\"" + user.getUserName() + "\",\"userPassWord\":" + "\"" + user.getUserPassword() + "\"" + "}"; return json; }打开浏览器,地址栏中输入 http://localhost:8888/sm-demo/json/test04 。浏览器中将显示如下信息:传递给浏览器的虽然还是字符串,但是是具有特定格式的 JSON 字符串,如果要交给 JS 处理,JS 表示很开心。是的,数据格式的问题解决了,但是,编码的工作量增加了很多。其实,你所想要的结果,Spring MVC 能轻松帮你实现。
- 2. 如何获取响应内容 要获取响应内容,当然是 XMLHttpRequest 对象下的几大法器:responseText 、 responseXML 和 response。其中:responseText: 一个 DomString,返回一个纯文本的值。 当该值为 “” 的时候,表示这个请求还没有开始 send();当该值为 null 的时候,表示请求失败。responseXML: 处理 XML 响应。返回一个包含请求检索的 HTML 和 XML 的 Document。 当请求还没有 send(),或者失败了,甚至是解析失败的时候,该值为 null 。当 responseType 不是 “” 或者 "document"的时候,会报错。response: 返回响应正文。返回类型可以有 DOMString、 Blob 、ArrayBuffer 、Document 或 JavaScript Object ,这取决于 responseType。了解获取响应内容的这 3 个属性,接下来,我们会分别返回 DomString、XML 和 Json 类型数据来展示着响应内容。核心响应代码:xhr.onreadystatechange = function() { if (this.readyState == 4) { if (this.status === 200 || this.status === 304) { var res = this.response var resText = this.responseText var resXml = this.responseXML console.log(res, resText, resXml) // 分别打印三者 } }};2.1 返回 DomString服务端返回内容:‘text’请求结果:Content-type:可以看到,当返回的是一个 DomString 的时候,responseText 和 response 都有值,而 responseXML 因为解析失败为 null。2.2 返回 XML服务端返回内容:<data>Hello World</data>请求结果:Content-type:这一次我们的 XML 正常解析了,并且在控制台上可以看到打印出了一个 Document,而 response 和 responseText 分别打印了该 XML 的文本形式。2.3 返回 Json服务端返回内容:{a:1}请求结果:Content-type:当返回的是一个 Json 类型数据的时候,response 和 responseText 分别为对应的文本值,而 responseXML 因为解析失败成了 null。以上展示了 Ajax 获取服务端响应的三种类型的数据,简单的展示给大家 XMLHttpRequest 的 response、responseText 和 responseXML 在不同数据类型下的表现,希望以此能够加深大家对 XMLHttpRequest 的了解。
ajax如何返回json相关搜索
-
ajax
android
a href
abap
abap开发
abort
absolutelayout
abstractmethoderror
abstracttablemodel
accept
access
access教程
accordion
accumulate
acess
action
actionform
actionlistener
activity
addeventlistener