我已经尝试过的是:
在Jsp页面中:
<select name="batch" id="batch" class="form-control" onchange="getCourse()" >
<c:forEach var="item" items="${batchList}">
value="${item.key}">${item.value}</option>
</c:forEach>
</select>
<script type="text/javascript">
function getCourse(){
$batch = $('#batch');
$.ajax({
type: "GET",
url: "./batchajax?batchId="+$batch.attr("selectedIndex"),
success: function(data){
console.log("SUCCESS ", data);
},
error: function(e){
console.log("ERROR ", e);
}
});
}
</script>
警告:在名为“dispatcher”的DispatcherServlet中找不到具有URI [/ ABCD / admin / batchajax] 的HTTP请求的映射
对于此API,Spring控制器是:
@Controller
@RequestMapping(value = "/admin")
public class AjaxController {
@RequestMapping(value="/batchAjax",method=RequestMethod.GET)
public @ResponseBody ResponseEntity<String> getBatch(@RequestParam(value = "batchId", required = true)String batchId) {
String returnText;
System.out.println("batchId from ajax is" );
return new ResponseEntity<String>("batchId from ajax is", HttpStatus.OK);
}
}
如果我从浏览器运行此API,它运行良好。下面是截图
我没有得到我做错的地方。
任何人都能让我纠正吗?
答案 0 :(得分:1)
Spring mvc请求映射区分大小写。你必须改变你的ajax请求,
url: "./batchajax?batchId="+$batch.attr("selectedIndex")
要
url: "./batchAjax?batchId="+$batch.attr("selectedIndex")
答案 1 :(得分:0)
您需要更改url: "./batchajax?batchId="+$batch.attr("selectedIndex"),
到url: "admin/batchAjax?batchId="+$batch.attr("selectedIndex"),
您声明控制器@RequestMapping(value = "/admin")
,因此您需要先访问控制器admin
然后访问您的方法/batchAjax
。
还要注意使用此batchajax
的区分大小写的字词,但您的方法声明batchAjax
。