如何在Spring 4中使用AJAX调用API

时间:2016-07-20 17:20:52

标签: ajax jsp spring-mvc

我已经尝试过的是:

在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>
  • 如果我们从下拉列表中选择任何选项,则应在下拉列表的onChange()事件中调用API。
  • 它将调用getCourse()函数,我在服务器端的控制台上获得以下消息。
  

警告:在名为“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,它运行良好。下面是截图

enter image description here

我没有得到我做错的地方。

任何人都能让我纠正吗?

2 个答案:

答案 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