2

我尝试在我的 spring3 mvc 应用程序中实现 ajax。当我返回一个简单的字符串时,Ajax 工作得很好,但是当我尝试返回一个字符串列表时,我得到了一个406 error.

这是我的context文件

<context:annotation-config />
<context:component-scan base-package="com.ajaxtest" />
<mvc:annotation-driven />
<import resource="hibernate-context.xml" />
<mvc:resources mapping="/resources/**" location="/resources/"/>

这是我的控制器映射方法

@RequestMapping(value="/test", method = RequestMethod.GET, 
        headers="Accept=*/*")
public @ResponseBody List<String> testAjax(@RequestParam("query") String query) {
    System.out.println(query);
    ArrayList<String> list = new ArrayList<String>();

    for (int i = 0; i < 10; i++) {
        list.add(""+i);
    }
    return list;
}

这是我的js代码。

$(function(){
    $.get('ajax/test.html',{'query' : 1},function(data){
        console.log(data);
    });
});

我添加了以下用于映射的 jar 文件。

jackson-core-2.0.2.jar, jackson-core-asl-1.9.7.jar, jackson-datatype-json-org-2.0.2.jar, jackson-mapper-asl-1.9.7.jar

我应该做哪些更改才能将对象列表返回给 js?

4

1 回答 1

2

HTTP 错误代码 406 代表错误的客户端请求(请参阅HTTP 错误代码

请求的资源只能生成根据请求中发送的 Accept 标头不可接受的内容。

您需要将 Accept Header 设置为application/json. 在 JQuery 中,您可以使用jQuery.getJSON()

于 2012-08-08T19:27:47.303 回答