mapper:
<select id="getDate" resultType="org.his.beans.OutBound">
select distinct ny from OutBound order by ny desc
</select>
controller:
@RequestMapping("/main")
@ResponseBody
public ModelAndView main(HttpServletResponse response, ModelAndView mv, HttpServletRequest request) {
try {
List<OutBound> list = service.getDate();
JSONArray jsonArray = JSONArray.fromObject(list);
mv.addObject("jsonArray",jsonArray);
System.out.println(jsonArray);
return mv;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
jsp:
<script type="text/javascript">
$(document).ready(
function() {
$.ajax({
type : "POST",
url : "main",
dataType : "json",
success : function(data) {
alert(data);
for (var i = 0; i < data.length; i++) {
$("#ny").append(
"<option>" + data[i].NY + "</option>");
}
}
});
});
</script>
建议解决思路:
1.首先查看controller是否编写正确,即直接在地址栏上输入url看是否进入controller对应的方法,然后是否有返回值
2.第一步没问题,那么就是ajax请求的问题:第一,查看请求方式是否正确包括:url,参数形式;第二,返回值处理方式是否正确:先看是否接收到返回值。
那么从你贴出的代码来看,貌似url有点问题,你可以测试下.
希望对你的问题有所帮助
因为你返回的数据它处理不成json,怎么成功
用text类型吧,在complete里看看是否成功返回了
有没有成功请求了控制器
加了@ResponseBody后,直接返回list就可以,框架会帮你转json
建议:
检查ajax调用的方法是否正确,不同的Jquery调用的方法不一样,后台的Json字符串封装也是不一样的,最新的版本的直接返回string类型的Json字符串就可以,但老的版本返回的是JsonResult类型的才识别
配置了responseBoby你直接返回list就可以了
controller:
@RequestMapping("/main")
@ResponseBody
public ModelAndView main(HttpServletResponse response, ModelAndView mv, HttpServletRequest request) {
try {
return service.getDate();
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
<script type="text/javascript">
$(document).ready(function() {
$.ajax({
type : "POST",
url : "main",
dataType : "json",
success : function(data) {
var b = "<option>请选择</option>";
for ( var i = 1; i < data.length; i++) {
b += "<option value='"+data[i]+"'>" + data[i] + "</option>";
alert(b);
$("#ny").html(b);
}
}
});
});
修改之后可以进success了 下面循环alert()弹出的数据都是object,界面显示不了要什么处理呢