1

在这个场景中基于两个组合框状态和地区

我的 javascript

   <script>


    function selectState() {

        $.ajax({
            type : 'POST',
            dataType : 'json',
            url : '/learnware/selectstate.html',
            data : ({ 
                 id : $('#state').val() 
                 }),
            success: function(responseData) {
            if(responseData != null) {
                $('#district')
                .find('option')
                .remove()
                .end();

                 $.each(responseData, function(index,item) {    
                     $('#district').append(
                                $('<option></option>').val(item['id']).html(item['name'])
                            );                     
                    });  
            }  
        }

         });    
    }


</script>

在这里,我的控制器在与 spring 集成的 scala 上

@RequestMapping(value = Array("selectstate.html"))
  @ResponseBody
  def getState(@RequestParam id: Long): java.util.List[District] = {
  var districtList:List[District]=null
    if(id!=null){
     var districtList:List[District]=districtService.findDistrictListByStateId(id) 
     println(districtList)
    }
    districtList
  } 

最后是我的 html 组合框

<select id="state" onchange="selectState();">

<option th:each="s : ${states}" th:text="${s.stateName}" th:value="${s.id}">India</option>

</select>


<select id="district" >

<option ></option>

</select>

问题是当我更改选择框值时,浏览器(chrome)控制台给了我一些错误,它不会更改为区域选择框

浏览器控制台错误

POST http://localhost:8080/learnware/selectstate.html 406 (Not Acceptable) jquery.js:8706
4

1 回答 1

0

这是一个带有 406 HTTP 状态响应的类似线程

Spring JSON 请求得到 406(不可接受)

一般来说,这意味着您的浏览器(chrome)请求的内容类型无法由服务器提供。chrome 浏览器在 Http Accept 标头中指示其所需的内容类型。

因此,您可以检查几件事:

  1. 如果请求中的 http Accept 标头不同,请检查 chrome 的开发人员并相应地修复它。
  2. 如果不是,则可能是无法生成响应。该链接表明无法注册 Jackson JSON Mapper,或者该库不在您的类路径中。
于 2013-09-12T12:16:14.453 回答