javascript - 一个页面的超链接向后台发请求的问题?

查看:115
本文介绍了javascript - 一个页面的超链接向后台发请求的问题?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

先来前jsp页面的代码

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3c.org/TR/1999/REC-html401-19991224/loose.dtd">
<html>
<head>
     <!-- 包含公共的JSP代码片段 -->
    
<title>无线点餐平台</title>



<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script type="text/javascript" src="${pageContext.request.contextPath }/pos/style/js/jquery.js"></script>
<script type="text/javascript" src="${pageContext.request.contextPath }/pos/style/js/page_common.js"></script>
<link href="${pageContext.request.contextPath }/pos/style/css/common_style_blue.css" rel="stylesheet" type="text/css">
<link rel="stylesheet" type="text/css" href="${pageContext.request.contextPath }/pos/style/css/index_1.css" />

<script type="text/javascript">
    $(function(){
        $("#isorder").click(function(){
            var val = this.innerHTML;
            if(val=="预定") {
                var url = this.href + "&tableStatus=1";
                alert(url);
                $.post(url, function(data){
                    $("#orderStatus").html("预定");
                    $("#orderDate").html(data);
                    $("#isorder").text('退订');
                });
            } else {
                var url = this.href + "&tableStatus=2";
                alert(url);
                $.post(url, function() {
                    $("#orderStatus").html("空闲");
                    $("#orderDate").html("");
                    $("#isorder").text('预定');
                });
            }
            return false;
        });
    })
</script>

</head>
<body>
<!-- 页面标题 -->
<div id="TitleArea">
    <div id="TitleArea_Head"></div>
    <div id="TitleArea_Title">
        <div id="TitleArea_Title_Content">
            <img border="0" width="13" height="13" src="${pageContext.request.contextPath }/pos/style/images/title_arrow.gif"/> 餐桌列表
        </div>
    </div>
    <div id="TitleArea_End"></div>
</div>


<!-- 过滤条件 -->
<div id="QueryArea">
    <form action="/wirelessplatform/board.html" method="get">
        <input type="hidden" name="method" value="search">
        <input type="text" name="keyword" title="请输入餐桌名称">
        <input type="submit" value="搜索">
    </form>
</div>


<!-- 主内容区域(数据列表或表单显示) -->
<div id="MainArea">
    <table class="MainArea_Content" cellspacing="0" cellpadding="0">
        <!-- 表头-->
        <thead>
            <tr align="center" valign="middle" id="TableTitle">
                <td>编号</td>
                <td>桌名</td>
                <td>状态</td>
                <td>预定时间</td>
                <td>操作</td>
            </tr>
        </thead>    
        <!--显示数据列表 -->
        <tbody id="TableData">
            <c:choose>
                <c:when test="${not empty requestScope.tables }">
                    <c:forEach items="${tables }" var="table">
                            <tr class="TableDetail1">
                                <td align="center">${table.id }&nbsp;</td>
                                <td align="center">${table.tableName }&nbsp;</td>
                                <td align="center" id="orderStatus">${table.tableStatus == 1 ? "预定":"空闲" }</td>
                                <td align="center" id="orderDate">
                                    <fmt:formatDate value="${table.orderDate }" pattern="yyyy-MM-dd HH:mm:ss"/>
                                </td>
                                <td>
                                    <a href="${pageContext.request.contextPath }/dinnertable?method=updateDinnerTable&id=${table.id }" class="FunctionButton" id="isorder">${table.tableStatus == 1 ? "退订":"预定" }</a>
                                    <a href="${pageContext.request.contextPath }/dinnertable?method=deleteDinnerTable&id=${table.id }" onClick="return delConfirm();" class="FunctionButton">删除</a>
                                </td>
                            </tr>
                        </c:forEach>
                </c:when>
                <c:otherwise>
                    <tr>
                        <td align="center" colspan="4">没有餐桌信息!请添加后查询。。。。</td>
                    </tr>
                </c:otherwise>
            </c:choose>
        </tbody>
    </table>
    
   <!-- 其他功能超链接 -->
    <div id="TableTail" align="center">
        <div class="FunctionButton"><a href="${pageContext.request.contextPath }/pos/saveBoard.jsp">添加</a></div>
    </div> 
</div>
</body>
</html>

再来后台处理


    public Object updateDinnerTable(HttpServletRequest request, HttpServletResponse response) {
        Object url = null;
        String id = request.getParameter("id");
        String tableStatus = request.getParameter("tableStatus");
        System.out.println(tableStatus);
        //构建对象
        DinnerTable dinnerTable = new DinnerTable();
        dinnerTable.setId(Integer.parseInt(id));
        dinnerTable.setTableStatus(Integer.parseInt(tableStatus));
        Date orderDate = (Integer.parseInt(tableStatus) == 2) ? null:new Date();
        dinnerTable.setOrderDate(orderDate);
        dinnerTableService.update(dinnerTable);
        
        SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String date = df.format(orderDate);
        try {
            PrintWriter writer = response.getWriter();
            writer.write(date);
        } catch (IOException e) {
            e.printStackTrace();
        }
        
        System.out.println("id:" +id + "; tableStatus:" + tableStatus);
        return url;
    }

来运行结果

然后添加一条数据 再对新添加的数据进行操作就报错了

null
java.lang.reflect.InvocationTargetException
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at com.uiyllong.servlet.BaseServlet.service(BaseServlet.java:36)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:292)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
    at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:212)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:141)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
    at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:616)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:528)
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1099)
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:670)
    at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.doRun(AprEndpoint.java:2508)
    at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.run(AprEndpoint.java:2497)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.NumberFormatException: null
    at java.lang.Integer.parseInt(Integer.java:542)
    at java.lang.Integer.parseInt(Integer.java:615)
    at com.uiyllong.servlet.DinnerTableServlet.updateDinnerTable(DinnerTableServlet.java:77)
    ... 27 more

请大神看看哪里有问题

解决方案

根据题主问题的评论,明白题主问题之所在了,你的html是这样的:

<a href="${pageContext.request.contextPath }/dinnertable?method=updateDinnerTable&id=${table.id }" class="FunctionButton" id="isorder">${table.tableStatus == 1 ? "退订":"预定" }</a>

当有多条数据时,这条也会重复多次。可是你是这样选择的:

$("#isorder").click(function(){

重复ID,jquery只会选第一条,CSS可以容错当成class用。你明白问题所在了吧

这篇关于javascript - 一个页面的超链接向后台发请求的问题?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆