如何在JSP中使用ajax在同一页面显示另一个页面的搜索结果

在JSP中使用Ajax可以实现无刷新请求数据,从而大幅提高网站的用户体验,对于需要快速显示搜索结果的网站,使用Ajax是很有必要的。下面是使用Ajax在同一页面显示另一个页面的搜索结果的攻略:

  1. 首先要编写JSP页面,其中包含搜索框和用于显示搜索结果的HTML元素。
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>Ajax搜索示例</title>
    <script src="https://cdn.bootcss.com/jquery/3.5.1/jquery.min.js"></script>
</head>
<body>
    <h1>Ajax搜索示例</h1>
    <form>
        <label for="search">搜索:</label>
        <input type="text" id="search" name="search">
        <button type="button" id="searchBtn">搜索</button>
    </form>
    <div id="result"></div>
    <script>
        // 定义Ajax请求函数
        function search() {
            // 获取搜索关键字
            var keyword = $('#search').val();
            // 发送Ajax请求
            $.get('/search.jsp', { keyword: keyword }, function(data) {
                // 将搜索结果显示在页面上
                $('#result').html(data);
            });
        }
        // 绑定搜索按钮点击事件
        $('#searchBtn').click(search);
    </script>
</body>
</html>

该页面包含搜索框和用于显示搜索结果的div元素。当用户在搜索框中输入关键字并点击搜索按钮时,页面将发送Ajax请求,向/search.jsp页面请求搜索结果,并将结果显示在div元素中。

  1. 接下来要编写/search.jsp页面,用于接收Ajax请求,并返回搜索结果。
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page import="java.util.*" %>
<%@ page import="java.io.*" %>
<%
    // 获取搜索关键字
    String keyword = request.getParameter("keyword");
    // 模拟搜索结果
    List<String> results = new ArrayList<String>();
    for (int i = 1; i <= 10; i++) {
        results.add("搜索结果" + i);
    }
%>
<ul>
<% 
    // 输出搜索结果
    for (String result : results) {
        out.println("<li>" + result + "</li>");
    }
%>
</ul>

该页面从请求参数中获取搜索关键字,模拟搜索结果,并将结果输出为ul/li元素。

  1. 最后,在Tomcat中启动网站,访问JSP页面,输入关键字并点击搜索按钮,即可在同一页面显示/search.jsp页面返回的搜索结果。

示例1:酒店订单搜索页面

搜索页面使用jsp和ajax技术,网页整体布局分为搜索部分和搜索结果部分。搜索部分有表单输入框、提交按钮,输入完成提交后,ajax发送异步请求,将搜索结果动态展示在页面上。

搜索部分html代码:

<!-- 搜索部分 -->
<div class="search">
    <form id="orderSearchForm" class="layui-form layui-form-pane">
        <div class="layui-form-item">
            <div class="layui-inline">
                <label class="layui-form-label">用户名</label>
                <div class="layui-input-inline">
                    <input type="text" name="username" placeholder="请输入用户名" autocomplete="off" class="layui-input">
                </div>
            </div>
            <div class="layui-inline">
                <label class="layui-form-label">酒店名</label>
                <div class="layui-input-inline">
                    <input type="text" name="hotelName" placeholder="请输入酒店名" autocomplete="off" class="layui-input">
                </div>
            </div>
            <button class="layui-btn" lay-filter="search" lay-submit>查询订单</button>
        </div>
    </form>
</div>

搜索结果部分html代码:

<!-- 搜索结果部分 -->
<div class="result-list">
    <table class="layui-table">
        <colgroup>
            <col width="150">
            <col width="150">
            <col width="150">
            <col>
        </colgroup>
        <thead>
            <tr>
                <th>订单号</th>
                <th>酒店名</th>
                <th>用户名</th>
                <th>下单时间</th>
            </tr>
        </thead>
        <tbody id="orderList"></tbody>
    </table>
    <div class="page-div"></div>
</div>

js代码如下:

// 查询订单列表
function getOrderList(data) {
    $.ajax({
        type: "GET",
        url: "/order/search",
        data: data,
        success: function(res) {
            if(res.code == 0) {
                var orders = res.data;
                var html = "";
                $.each(orders, function(index, item) {
                    html += "<tr>";
                    html += "<td>" + item.orderNo + "</td>";
                    html += "<td>" + item.hotelName + "</td>";
                    html += "<td>" + item.username + "</td>";
                    html += "<td>" + item.createTime + "</td>";
                    html += "</tr>";
                });
                $("#orderList").html(html);   // 添加到页面
                renderPage(res.total, data.pageNo, data.pageSize);   // 渲染分页组件
            }
            else {
                layer.msg(res.msg, {icon: 2, time: 2000});
            }
        },
        error: function(xhr, status, error) {
            layer.msg("请求出错:" + error, {icon: 2, time: 2000});
        }
    });
}

// 监听表单提交事件
form.on('submit(search)', function(data){
    getOrderList(data.field);
    return false;
});

示例2:图片搜索页面

搜索页面使用jsp和ajax技术,将搜索框、搜索结果同样分为两个部分,搜索框部分包含搜索框和提交按钮,搜索结果部分用div元素动态展示搜索结果。

搜索部分html代码:

<!-- 搜索部分 -->
<div class="search">
    <form id="searchForm">
        <div class="search-box">
            <input type="text" name="keyword" placeholder="请输入搜索内容">
            <button type="submit" class="search-button">搜索</button>
        </div>
    </form>
</div>

搜索结果部分html代码:

<!-- 搜索结果部分 -->
<div class="search-result" id="searchResult">
</div>

js代码:

$('#searchForm').submit(function(e) {
    e.preventDefault();  // 阻止表单默认提交事件

    var keyword = $("input[name='keyword']").val();
    var url = '/image-search?keyword=' + keyword;
    $.get(url, function(data){
        var html = '';
        html += '<div class="result-title">共搜索到' + data.total + '张图片</div>';
        html += '<div class="result-container">';
        $.each(data.data, function(i, item) {
            html += '<div class="result-item">';
            html += '<a href="' + item.url + '" data-lightbox="image" data-title="' + item.title + '">';
            html += '<div class="result-image"><img src="' + item.url + '"></div></a>';
            html += '<div class="result-title">' + item.title + '</div>';
            html += '</div>';
        });
        html += '</div>';
        $('#searchResult').html(html);
    });
});

在搜索框中输入关键字,点击提交按钮后,将发送ajax请求,向/image-search页面请求搜索结果,并将结果动态展示在页面上。其中,图片结果使用lightbox插件展示图片,使得图片展示更美观。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:如何在JSP中使用ajax在同一页面显示另一个页面的搜索结果 - Python技术站

(0)
上一篇 2023年5月12日
下一篇 2023年5月12日

相关文章

  • jQuery中prependTo()方法用法实例

    下面是关于 jQuery 中 prependTo() 方法的详细解释及示例说明: 什么是 prependTo() 方法 jQuery 中的 prependTo() 方法用于在一个元素内的开头插入另一个元素。它的语法如下: $(要添加的元素).prependTo(元素); 其中,$(要添加的元素) 是被添加的元素选择器,元素就是被插入的元素。该方法可以将被添加…

    jquery 2023年5月27日
    00
  • ASP.NET实现二维码(QRCode)的创建和读取实例

    ASP.NET实现二维码(QRCode)的创建和读取实例 二维码(QRCode)是一种矩阵条码,常见于移动支付、票务系统、物流和仓储管理等领域。ASP.NET作为一种优秀的动态Web开发框架,提供了多种创建和读取二维码的方式。 一、创建二维码 1.1 使用ZXing.NET库创建二维码 ZXing.NET是一个开源且功能丰富的二维码处理库,可以用于生成和解码…

    jquery 2023年5月27日
    00
  • 如何使用jQuery Mobile制作右侧定位图标

    以下是使用jQuery Mobile制作右侧定位图标的完整攻略: 首先,需要在HTML文件中引入jQuery Mobile库。可以通过以下代码实现: <head> <meta charset="-8"> <meta name="viewport" content="width=d…

    jquery 2023年5月11日
    00
  • js for循环,为什么一定要加var定义i变量

    在使用JavaScript进行for循环的过程中,使用var关键字来定义循环变量i是一个非常重要的规则。 在for循环中,变量i通常被用作索引,每次循环都会增加1,直到达到循环条件为止。如果没有使用var定义i变量,JavaScript引擎会认为这个i变量是全局变量,而不是仅在循环中使用的局部变量。这将导致以下两个问题: 在多个函数或文件中使用相同的变量名时…

    jquery 2023年5月27日
    00
  • jQWidgets jqxMenu animationHideDuration属性

    以下是关于 jQWidgets jqxMenu 组件中 animationHideDuration 属性的详细攻略。 jQWidgets jqxMenu animationHideDuration 属性 jQWidgets jqxMenu 组件的 animationHideDuration 属性用于设置菜单隐藏时的动画持续时间该默认值为 150 毫秒。 语法…

    jquery 2023年5月12日
    00
  • JS实现屏蔽网页右键复制及ctrl+c复制的方法【2种方法】

    JS实现屏蔽网页右键复制及Ctrl+C复制的方法有两种,分别是使用JavaScript事件取消默认行为和使用CSS样式禁用右键菜单显示。下面我将一步步为你详细讲解,并提供两个示例说明。 方法一:使用JavaScript取消默认行为 步骤一:添加事件监听器 首先,我们在需要屏蔽复制的页面上添加事件监听器,通过addEventListener方法来监听conte…

    jquery 2023年5月27日
    00
  • jQWidgets jqxSlider值属性

    jQWidgets jqxSlider值属性 jqxSlider 是jQWidgets的一个组件,用于创建一个水平或垂直的滑块。滑块可以用来捕捉用户的数字或滑动值,并将其发送到服务器进行处理。jqxSlider 组件提供了 value 属性来设置滑块的值,下面我来详细讲解此属性的使用方法。 value 属性概述 value 属性用于设置或获取 jqxSlid…

    jquery 2023年5月12日
    00
  • jQuery UI的Selectmenu open事件

    jQuery UI的Selectmenu open事件详解 jQuery UI的Selectmenu是一个下拉菜单插件,它允许用户从预定义的选项中进行选择。在本文中,我们将详细介绍Selectmenu的open事件的用法和示例。 open事件 open事件是Selectmenu插件中的事件,它在选择菜单打开时触发。可以使用该事件菜单打开时执行一些操作。 语法…

    jquery 2023年5月11日
    00
合作推广
合作推广
分享本页
返回顶部