web实验六

一、实验目标

通过本次实验综合HTML、CSS、JavaScript、jQuery等技术完成一个前端应用程序。支撑专业核心能力的培养。

二、实验要求

1. 综合应用HTML、CSS完成页面布局

2. 结合jQuery AJAX实现数据请求与提交

3. 熟悉Web程序的发布

三、实验内容

1. 搭建前端应用程序

2. 综合应用HTML、CSS、JavaScript技术

3. 以jQuery AJAX实现数据请求与提交

4. 完成应用程序的发布

四、主要仪器设备

硬件:PC电脑

软件:Visual Studio Code/WebStorm/HBuilder

五、考核方式及要求

提交实验报告、源代码

六、实验内容和步骤

开发一个简单英语四级英汉电子词典。

1、设计词典布局(美观即可,不要求按设计图精确布局)

(1)创建网页,创建网页文件dict.html。

(2)网页布局

使用div+css按图1进行布局,风格为手机网页,文本框和下面内容区域宽度自适应,搜索按钮宽度固定,搜索栏固定到屏幕最上方。

请输入英文词汇

查词

按钮

内容区域

文本框

图1 词典设计图

2、词典页面操作典事件编程

(1)相似词汇显示

当文本框发生改变时显示相似词汇,如图2所示。

wo

查词

wooden

wool
workman
workshop
world-wide
worm
worship
worst
worth

图2 输入词汇

实现方法:向接口getSimilarWords发起异步(AJAX)请求(参见《实验6_Web接口文档》第1节),服务器会返回响应,包含了相似词汇数据,将该数组中的词汇渲染到内容区域中(如图2所示),参考代码:

$.ajax({

url: "http://43.136.217.18:8081/getSimilarWords",

data: {word: "文本框中的字符"},

type: "GET",

datatype="json",

//访问成功,查看State

success: function(data){

//解析JSON

if(data.State == "SUC"){

……       //成功后,读取相似词汇,渲染到图2的列表

}

else{

……       //失败后,在图2的列表处显示失败信息

}

},

//访问失败

error: function(data){

…..        //在图2的列表处显示“系统错误消息”

}

});

JSON解析方式:所有相似词汇放在data.Content中,参见《实验6_Web接口文档》第1.4节。

2)查询词汇结果显示

点击图2中的“查词按钮”,按文本框中的词汇进行查询;点击图2中相似词汇列表中的项目,按列表项中的词汇进行查询;查询需要异步(AJAX)调用getWordDetail接口(参见《实验6_Web接口文档》第2节),查询结果按图3的显示效果填充。

post

查词

post    n.柱,桩,杆
        vt.贴出
 
     
        n. 邮政,邮寄;邮件
 
     
        n.岗位,哨所;职位

 

图3 词汇查询结果

参考代码:

$.ajax({

url: "http://43.136.217.18:8081/getWordDetail",

data: {word: "文本框或列表项中的词汇"},

type: "GET",

datatype: "json",

//访问成功,查看State

success: function(data){

//解析JSON

if(data.State == "SUC"){

……       //成功后,读取相似词汇,渲染到图3的内容区域

}

else{

……       //失败后,在图3的内容区域处显示错误信息

}

},

//访问失败

error: function(data){

…..        //在图3的内容区域处显示“系统错误消息”

}

});

JSON解析方式:词汇解释放在data.Content中,参见《实验6_Web接口文档》第2.4节;同一个词汇可能有多条解释,同一条解释可能有多组不同词性,同一组词性可能有多条释义,参见图3和《实验6_Web接口文档》第2.4节例2。

代码

<!DOCTYPE html>

<html>

<head>

    <meta charset='utf-8'>

    <meta http-equiv='X-UA-Compatible' content='IE=edge'>

    <title>实验六</title>

    <style>

        #word{

            float: left;

        }

        #input_word{

            height: 1rem;

            font-size: .5rem;

            line-height: .5rem;

            margin-left: .5rem;

        }

        #search{

            height: 1rem;

            font-size: .5rem;

            line-height: .5rem;

            margin-left: .5rem;

        }

        #resultul{

            margin: 0rem;

        }

        #result ul li{

            height: 1.5rem;

            border: .01rem solid black;

            /* 合并边框 */

            margin: 0rem 0rem -.01rem -.01rem;

            /* 把li的小黑点清除 */

            list-style-type:none;

            padding-left: 0rem;

        }

    </style>

    <script src="js/jquery-3.1.1.min.js"></script>

    <script>

        function setRootFontSize(){

            var rootHtml = document.documentElement;

            var rem = rootHtml.clientWidth / (1080 / 100);   //1080为设计图px宽度

            rootHtml.style.fontSize = rem + "px";

            }

            setRootFontSize();   //网页首次载入时执行一次

            window.addEventListener("resize", setRootFontSize, false);   //网页大小改变时执行

            window.addEventListener("orientationchange", setRootFontSize, false);   //横屏切换时执行

            $().ready(function(){

                $("#input_word").on("input",function(){

                    var para=$(this).val()

                    $.ajax({

                        url:"http://43.136.217.18:8081/getSimilarWords",

                        data:{word:para,max:30},

                        type:"get",

                        dataType:"json",

                        success:function(data){

                            if(data.state=="SUC"){

                                var html="<ul>";

                                for(var i in data.content){

                                    html+="<li>"+data.content[i]+"</li>";

                                }

                                html+="</ul>";

                                $("#result").html(html);

                                $("#result li").click(function(){

                                    var word=$(this).text();

                                    $.ajax({

                                        url:"http://43.136.217.18:8081/getWordDetail",

                                        data:{word:word},

                                        type:"get",

                                        dataType:"json",

                                        success:function(data){

                                            var html="<ul>"

                                            for(var i in data.content){

                                                for(var j in data.content[i].trans){

                                                    html+="<li>"+data.content[i].eng+data.content[i].trans[j].pos+data.content[i].trans[j].chn+"</li>";

                                                }

                                            }

                                            html+="</ul>";

                                            $("#result").html(html);

                                        }

                                    })

                                })

                            }

                            else{

                                alert("数据加载失败");

                            }

                        },

                        error:function(){

                            alert("连接失败");

                        }

                    })

                })

               

            })

    </script>

</head>

<body>

    <div id="word"><input type="text" id="input_word" placeholder="请输入英文词汇"></div>

    <div id="search_area"><input type="button" id="search" value="查词"></div>

    <div id="result"></div>

</body>

</html>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值