jquery ajax响应附加到选择标记(州 - 区明智)

时间:2013-09-12 11:04:12

标签: spring scala jquery

在此场景中基于两个组合框状态和分区

我的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>

这里我的控制器与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

1 个答案:

答案 0 :(得分:0)

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

Spring JSON request getting 406 (not Acceptable)

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

所以你可以检查几件事:

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