后台接收不到页面ajax请求,报500错误,麻烦帮我看下html和js写的有错吗

text.html

 <!doctype html>
<html>
<head>
    <meta charset="utf-8">
    <title>回收物列表</title>
    <link rel="stylesheet" href="styles/text.css"/>
    <script type="text/javascript"src="scripts/jquery.min.js"></script>
    <script type="text/javascript"src="scripts/text.js"></script>
</head>

<body>
<div>
    <form>
            <div>
                <label>请输入回收物种类</label>
                <select name="selectId" id="selectId">
                    <option value="%">全部回收物</option>
                    <option value="金属回收物">金属回收物</option>
                    <option value="塑料回收物">塑料回收物</option>
                    <option value="玻璃回收物">玻璃回收物</option>
                    <option value="纸张回收物">纸张回收物</option>
                    <option value="厨余垃圾">厨余垃圾</option>
                    <option value="其他垃圾">其他垃圾</option>
                </select>
            </div>
            <div>
                    <input type="button" value="查询" id="btSearch"/>
            </div>
            <br>
            <br>
    </form>
    <div>
        <table id="table-result">
            <thead>
            <tr>
                <th>checktype_id</th>
                <th>cid</th>
                <th>tchek</th>
                <th>content</th>
                <th>cvalue</th>
                <th>ctype</th>
                <th>cname</th>
                <th>smstemplate</th>
                <th>remark</th>
            </tr>
            </thead>
            <tbody id="tbody-result">
            </tbody>
        </table>
    </div>
</div>
</body>
</html>


text.js页面
$(function(){
    $('#btSearch').click(function(){
        var selectId=$('#selectId').val();
        var tbody=window.document.getElementById("tbody-result");
        console.log(selectId);
        $ajax({
            type:"post",
            dataType:"json",
            url:"http://localhost:8080/work/checktype/check.do",
            data:{ selectId:selectId },
            success:function(msg){
                if(msg.ret){
                    var str="";
                    var data=msg.data;

                    for(i in data){
                        str +="<tr>" +
                        "<td>" + data[i].checktype_id + "</td>" +
                        "<td>" + data[i].cid + "</td>" +
                        "<td>" + data[i].tchek + "</td>" +
                        "<td>" + data[i].content + "</td>" +
                        "<td>" + data[i].cvalue + "</td>" +
                        "<td>" + data[i].ctype + "</td>" +
                        "<td>" + data[i].cname + "</td>" +
                        "<td>" + data[i].smstemplate + "</td>" +
                        "<td>" + data[i].remark + "</td>" +
                        "</tr>";
                    }
                    tbody.innerHTML = str;
                }
            },
            error: function(){ alert("查询失败")
            } 
        });
    });
});

<!doctype html>



回收物列表



请输入回收物种类 全部回收物金属回收物塑料回收物玻璃回收物纸张回收物厨余垃圾其他垃圾


checktype_idcidtchekcontentcvaluectypecnamesmstemplateremark


提示错误
com.lfh.check.service.ServiceException: cname不存在
at com.lfh.check.service.ChecktypeServiceImpl.listchecks(ChecktypeServiceImpl.java:18)
at com.lfh.check.web.ChecktypeController.list(ChecktypeController.java:27)
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 org.springframework.web.method.support.InvocableHandlerMethod.invoke(InvocableHandlerMethod.java:215)
at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:132)
at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:104)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandleMethod(RequestMappingHandlerAdapter.java:745)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:686)
at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:80)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:925)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:856)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:953)
at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:844)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:620)
at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:829)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:501)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1040)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:607)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:314)
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)

1.确认地址http://localhost:8080/work/checktype/check.do无误
2.错误信息贴出来看下

500是后台错误,光贴前台没用

service里的cname是哪里的字段,检查下是不是名字错了,看大小写对不对!

package com.lfh.check.dao;

import java.util.List;
import java.util.Map;

public interface ChecktypeDao {
List> findByName(String cname);
}

package com.lfh.check.service;

import java.util.List;
import java.util.Map;

public interface ChecktypeService {
List> listchecks(String cname);
}

package com.lfh.check.service;

import java.util.List;
import java.util.Map;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.lfh.check.dao.ChecktypeDao;

@Service("checktypeService")
public class ChecktypeServiceImpl implements ChecktypeService{
@Autowired
private ChecktypeDao checktypeDao;

public List<Map<String, Object>> listchecks(String cname) {
    if(cname==null||cname.trim().isEmpty()){
        throw new ServiceException("cname不存在");
    }
    return checktypeDao.findByName(cname);
}

}

data:{ selectId:selectId },

AJAX data这里没有双引号改成这种 你试一下 data:{"selectId":selectId}

package com.lfh.check.web;

import java.io.Serializable;
import java.util.List;
import java.util.Map;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import com.lfh.check.service.ChecktypeService;
@Controller
@RequestMapping("/checktype")
public class ChecktypeController implements Serializable{
/**
*
*/
private static final long serialVersionUID = 3609958317843940347L;

@Autowired
private ChecktypeService checktypeService;

@RequestMapping("/check.do")
@ResponseBody
public JsonResult<List<Map<String,Object>>> list(String cname){
    List<Map<String,Object>> list=checktypeService.listchecks(cname);
    return new JsonResult<List<Map<String,Object>>> (list);
}

}

$ajax({ ==> $.ajax({

data:{ selectId:selectId }, 后台用cname接受参数,前台传参数的时候就应该用cname,必须前后台保持一样,你这里用了selectId传到后台,
后台肯定接受不到参数,就报不存在错误了
改成这样 data:{ cname : selectId },

if(cname==null||cname.trim().isEmpty()){
throw new ServiceException("cname不存在");
}

你查一下,cname为什么是null?异常不是这里报的????

<?xml version="1.0" encoding="UTF-8" ?>

<!DOCTYPE mapper PUBLIC "-//ibatis.apache.org//DTD Mapper 3.0//EN"

"http://ibatis.apache.org/dtd/ibatis-3-mapper.dtd">

resultType="java.util.Map"
parameterType="String">
select
checktype_id as checktypeId,
cid as cid,
tchek as tchek,
content as content,
cvalue as cvalue,
ctype as ctype,
cname as cname,
smstemplate as smstemplate,
remark as remark
from
tb_checktype
where
cname LIKE #{selectId} OR cname=#{selectId}

问题以全部解决,谢谢各位