使用jquery.autocomplete.js和Spring时,jquery.autocomplete.不能解析数据库返回的json。(如果报告406错误,请添加 Jackson jar包)。如果返回值改为String,则可以。因此查看一下源码:
现象如下:
如果使用response,可以显示:
w= "{query:'m',suggestions:['a','b','c'],data:['1','2','3']}";
out = response.getWriter();
out.print(w);
使用
return w;
也可以显示。
使用如下代码不可以显示:
@RequestMapping(value = { "/ajax/", "/ajax" }, method = RequestMethod.GET)
@ResponseBody
public Map<String, Object> load(@RequestParam(value = "query") String name) {
Map<String, Object> map = new HashMap<String, Object>();
map.put("query", name);
map.put("suggestions", suggestions);
map.put("data", data);
return map;
}
此时不能显示。
因为第一和二种是字符串,第三种是服务器直接返回JSON,因此修改js文件中
a = eval("(" + b + ")")
为
a=b;
原js为什么使用eval?
对于服务器返回的JSON字符串,如果jquery异步请求没做类型说明,或者以字符串方式接受,那么需要做一次对象化处理,方式不是太麻烦,就是将该字符串放于eval()中执行一次。这种方式也适合以普通javascipt方式获取json对象,以下举例说明:
var dataObj=eval("("+data+")");//转换为json对象
为什么要 eval这里要添加 “("("+data+")");//”呢?
原因在于:eval本身的问题。 由于json是以”{}”的方式来开始以及结束的,在JS中,它会被当成一个语句块来处理,所以必须强制性的将它转换成一种表达式。
加上圆括号的目的是迫使eval函数在处理JavaScript代码的时候强制将括号内的表达式(expression)转化为对象,而不是作为语句(statement)来执行。举一个例子,例如对象字面量{},如若不加外层的括号,那么eval会将大括号识别为JavaScript代码块的开始和结束标记,那么{}将会被认为是执行了一句空语句。所以下面两个执行结果是不同的:
alert(eval("{}"); // return undefined
alert(eval("({})");// return object[Object]
对于这种写法,在JS中,可以到处看到。等效方法如下:
data =(new Function("","return "+json))();
分享到:
相关推荐
关于"jQuery读取json数据"这个主题,我们将会深入探讨如何利用jQuery的Ajax功能来高效地加载和解析JSON格式的数据,以及这样做带来的优势。 JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,它易于...
jQuery提供了方便的方法来处理JSON数据,包括`$.getJSON()`和`$.ajax()`等函数,可以方便地从服务器获取JSON数据并将其转化为JavaScript对象,或者将JavaScript对象转换为JSON字符串发送到服务器。 **jQuery的get...
当服务器返回JSON字符串,而jQuery异步请求没有指定数据类型或以字符串形式接收时,我们可以使用`eval()`函数将其转换为JavaScript对象。但请注意,`eval()`是危险的,因为它可以执行任何JavaScript代码,可能导致...
本案例将深入探讨如何使用jQuery来获取JSON数据并实现分页功能,这对于网页应用的数据展示至关重要。 首先,理解JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,它易于人阅读和编写,同时也易于...
这样可以方便地将JSON数据发送到服务器,或者在需要XML结构的环境中使用。 ```javascript var json = { "person": { "name": "John", "age": 30, "city": "New York" } }; $.json2xml(json); ``` 而`jquery....
`jquery.json-2.4.min.js` 是一个jQuery的插件,专门用于处理JSON数据。jQuery是一个广泛使用的JavaScript库,它简化了HTML文档遍历、事件处理、动画以及Ajax交互等任务。这个插件将JSON的功能进一步集成到jQuery中...
JQuery AJAX 和 JSON 是在 Web 开发中处理异步数据传输和数据格式化的重要工具。本文将深入探讨这两个概念以及它们在实际应用中的使用方法。 首先,JQuery 的 AJAX(Asynchronous JavaScript and XML)功能允许...
JSON数据通常包含键值对,其中键是字符串,值可以是各种数据类型,如字符串、数字、布尔值、数组、对象等。JSON的语法与JavaScript对象相似,但JSON格式更严格,必须符合一定的规范。 `viewer.js`插件的工作原理是...
本示例将详细介绍如何在Struts1.2项目中使用jQuery处理JSON数据。 **1. JSON基础** JSON是一种纯文本格式,基于JavaScript语法但不依赖JavaScript。一个JSON对象通常由大括号{}包围,其中包含键值对,键和值之间用...
本文主要讨论的是通过JQuery实现跨域请求JSON数据的方式——JSONP。 #### 三、JSONP原理及使用 **JSONP**是一种绕过同源策略的技术,它利用了`<script>`标签不受同源策略限制的特点。当使用JSONP进行跨域请求时,...
通过以上的知识点,可以了解到在Jquery Ajax异步处理JSON数据的过程中,开发者需要了解前端如何发送请求、指定期望的响应数据类型、以及如何在回调函数中处理服务器返回的JSON格式数据。这种机制使得Web应用可以提供...
在提供的压缩包中,"新建 文本文档.txt"可能是示例代码或者关于这个例子的说明,而"JQuery&JSON"可能是一个包含jQuery库和JSON数据文件的目录。确保正确引用这些资源,以使示例正常工作。 总结来说,这个综合例子...
例如,`Map, Object>`是Java中最常用的用于JSON数据处理的集合类型之一,它可以轻松地转换为JSON格式。 2. **JSON数据解析**:使用json-lib等库,开发者可以方便地解析HTTP请求中的JSON数据,将其转换为Java对象...
总之,使用jQuery解析JSON数据并构建级联菜单涉及到了DOM操作、事件处理、递归函数以及JSON数据的解析和利用。通过结合这些技术,开发者可以创建出响应式且交互性强的Web应用界面,提升用户体验。
Struts2是基于MVC模式的Java Web框架,它的Action类是处理用户请求的核心,可以接收和处理JSON数据。为了使Struts2支持JSON,我们需要在配置文件中添加相应的插件,如`struts2-json-plugin-*.jar`,并在Action类中...
// 在这里处理返回的JSON数据 console.log(data); }, error: function(xhr, status, error) { // 处理错误情况 console.error(error); } }); ``` 接着,我们讨论servlet。Servlet是Java Web开发中的一个组件...
当从后台获取JSON数据时,我们需要设置`dataType`参数为`'json'`,以告知jQuery期望的响应类型。例如: ```javascript $.ajax({ url: 'your-api-url', type: 'GET', dataType: 'json', success: function(data)...
3. 在前端处理返回的JSON数据:在$.ajax()方法的success回调函数中,返回的数据会被处理。这里使用了eval()函数来转换字符串形式的JSON数据为JavaScript对象。然而,在实际开发中,出于安全考虑,不建议使用eval()...
在Web开发中,jQuery是一个非常流行的JavaScript库,它极大地简化了DOM操作、事件处理和Ajax交互。本教程将深入探讨如何使用...实践是最好的老师,通过实际操作,你会更加熟练地掌握使用jQuery处理JSON数据的技巧。
以上就是关于"json数据jquery异步示例"的相关知识点,涵盖了JSON数据的创建、传输、解析以及jQuery中的异步操作和事件处理。在实际应用中,还需要考虑性能优化、安全性等问题,确保数据交互的高效和安全。