使用Spring MVC进行Ajax Get请求

3
这是我的带有Ajax请求的HTML页面。
<script type="text/javascript" src="http://code.jquery.com/jquery-1.7.1.min.js"></script>
<script src="http://code.jquery.com/mobile/1.4.2/jquery.mobile-1.4.2.min.js"></script>
<script type="text/javascript">

var a_id;

if (location.search) {
    a_id = location.search.substring(1);
    document.write(a_id);
}


$.ajax({
    type:'GET',
    url: "http://192.168.1.5:8080/SurveyApp3/getSingleAgent?a_id="+a_id,
    dataType: 'json',
    success:function(data, status){

        console.log(data);

        },
    error:function(xhr, status, errorThrown){

        console.log(xhr);
        console.log(status);
        console.log(errorThrown);
    }

});

</script>

以下是我的Spring MVC控制器方法

@RequestMapping(value= "/getSingleAgent", method= RequestMethod.GET)
public String getSingleAgents(@RequestParam("a_id") long a_id){

    List<Agents> agent= SpringController.getInstance().getSingleAgent(a_id);

    JSONObject json= new JSONObject(agent.get(0));

    System.out.println(json);
    return json.toString();

}

调用ajax请求之前,document.write(a_id)已正确打印出值。同时,控制器也被成功调用,方法内的所有代码都按照所需方式执行,System.out.println(json);也打印出了所需数据。

我的问题出在ajax请求上。ajax没有调用success:function,而是调用了error:function,并在日志中出现了以下错误。

08-04 20:39:05.191: D/CordovaLog(32740): [object Object]
08-04 20:39:05.191: I/chromium(32740): [INFO:CONSOLE(36)] "[object Object]", source:   file:///android_asset/www/updateAgentForm.html?9999999999 (36)
08-04 20:39:05.191: D/CordovaLog(32740): error
08-04 20:39:05.191: I/chromium(32740): [INFO:CONSOLE(37)] "error", source: file:///android_asset/www/updateAgentForm.html?9999999999 (37)
08-04 20:39:05.201: D/CordovaLog(32740): Not Found
08-04 20:39:05.201: I/chromium(32740): [INFO:CONSOLE(38)] "Not Found", source: file:///android_asset/www/updateAgentForm.html?9999999999 (38)

我哪里做错了?我认为问题在于ajax。

提前感谢!


1
尝试在你的getSingleAgents方法上添加@ResponseBody - sp00m
哇,太棒了,它起作用了,非常感谢! - Anirudh K
问题表述得不错。在这里提供日志已经过时了。点赞! - instinct
1个回答

0

很可能问题出在Spring MVC渲染视图时(请检查日志)。由于您的方法返回String,Spring期望它是要渲染的视图名称。 如果您想返回Json,我建议您返回POJO列表,并使用@ ResponseBody注释方法,正如sp00m在评论中建议的那样。


成功了!我还做了一个修改。将ajax中的dataType从json改为html。结合你说的,现在它运行得很好。谢谢。 - Anirudh K

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接