JS--AJAX获取JSON数据、获取头部信息

获取HTML文本

通过XMLHttpRequest对象的responseText属性获取返回的JSON数据字符串,然后可以使用evaluate()方法将其解析为本地JavaScript对象,从该对象中再读取任何想要的信息。

示例:将JSON对象字符串转换为本地对象

<%--
  Created by IntelliJ IDEA.
  User: 19798
  Date: 2019/9/28
  Time: 9:39
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
    <script>
        function createXMLHTTPObject() {
            var XMLHttpFactories = [//兼容不同浏览器和版本的创建函数数组
                function () {return new XMLHttpRequest()},
                function () {return new ActiveXObject("Msxml2.XMLHTTP")},
                function () {return new ActiveXObject("Msxml3.XMLHTTP")},
                function () {return new ActiveXObject("Microsoft.XMLHTTP")}
             ];
            var xmlhttp = false;
            for(var i = 0; i < XMLHttpFactories.length; i++){
                //尝试调用匿名函数,如果成功则返回XMLHttpRequest对象,否则继续调用下一个
                try{
                    xmlhttp = XMLHttpFactories[i]();
                }catch (e) {
                    continue;
                }
                break;
            }
            return xmlhttp;
        }
    </script>
</head>
<body>
    <h1>AJAX测试</h1>
    <button id="btn" value="btn" onclick="f()">按钮</button>
    <script>
        function f() {
            var ajax = createXMLHTTPObject();
            ajax.onreadystatechange = function(){
                if(ajax.readyState == 4 && ajax.status == 200){
                    var info = ajax.responseText;
                    var o = eval("(" + info + ")");
                    alert(info);
                }
            }
            ajax.open("get", "response.jsp",true);
            ajax.send();
        }
    </script>
</body>
</html>

response.jsp:

<%
    response.getWriter().write("{" +
            "name:'shangsan',age:'18'" +
            "}");
%>

点击测试按钮,弹出信息:
在这里插入图片描述
注意:eval()方法在解析字符串时存在安全隐患。如果JSON字符串中含有恶意代码,在调用回调函数时可能被执行。

解决方法:使用一种能够识别有效JSON语法的解析程序,当解析程序一旦匹配到JSON字符串中包含不规范的对象,会直接中断或者不执行其中的恶意代码。

头部信息

每个HTTO请求和响应的头部都包含一组消息,对于开发人员来说,获取这些信息具有重要的参考价值。XMLHttpRequest对象提供了两个方法用于设置或获取头部信息。

  • getAllResponseHeaders():获取响应的所有HTTP头信息
  • getResponseHeader():从响应信息中获取指定的HTTP头信息

示例:获取所有HTTP响应头信息:

<h1>AJAX测试</h1>
 <button id="btn" value="btn" onclick="f()">按钮</button>
 <script>
     function f() {
         var ajax = createXMLHTTPObject();
         ajax.onreadystatechange = function(){
             if(ajax.readyState == 4 && ajax.status == 200){
                 alert(ajax.getAllResponseHeaders());
             }
         }
         ajax.open("get", "response.jsp",true);
         ajax.send();
     }
 </script>

在这里插入图片描述
示例2:

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值