Ajax中responseText的json格式数据
向浏览器发送数据请求,返回的responseText是json数据格式,如果要使用其中的数据,需要进行解析。下面是两种解析方法:
方法一:
xhr = new XMLHttpRequest() // 创建XMLHttpRequest对象 var data = xhr.responseText; // 获取响应数据 var json=JSON.parse(data); // 使用JSON.parse()进行解析:使用JSON对象的静态方法parse(),将字符串解析为对象。
方法二:
xhr = new XMLHttpRequest() // 创建XMLHttpRequest对象 var data = xhr.responseText; // 获取响应数据 var jsonObject=eval("("+result+")"); // 使用eval() 进行解析,其中"(" + result+ ")"的两个括号是一定要写的,意思是将其中的relult转换成表达式。但是eval() 存在安全隐患。
相关知识点:表达式还是语句?
如果在行首是一个大括号,那么它到底是表达式还是语句呢?遇到这种情况,JavaScript引擎一律解释为代码块,但是如果非要解析成对象,该怎么办呢?那就在使用括号将其包裹起来,这种情况在eval() 语句中表现的最明显了
eval(\'{foo:123}\') // 解析成代码块——表示一个代码块中有一个foo标签,指向一个表达式123 eval(\'({foo:123})\') // 解析为一个对象——表示一个对象,其中属性foo,指向了123