前台Ajax:
后台方法:
@RequestMapping(value="/course/result.action")
public @ResponseBody String result(String name,HttpServletRequest request,HttpServletResponse response){
System.out.println(request.getParameter("name"));
System.out.println("11111");
return "";
}
最后成功走了success方法,但是在后台方法中根本就没有走,但是的确请求路径正确的,但是没有走方法,各位大神解答解答
以上的各位:
问题是解决了,我把解决的代码发上来,但是出现了一个新问题,传回前台的值变成全是????乱码,如何解决,我使用各种方法都不行,包括编码都设置了。
传值问题解决后的代码:
$.ajax({
type:"POST",
url:"course/result.action",
dataType:"text",
data:{name:cname},
success:function(data){
if(data=="ok"){
alert("不存在,可使用:"+data);
flag=true;
}else{
alert("存在,不可使用:"+data);
flag=false;
}
},
error:function(){
alert("方法执行不成功!");
}
后台代码:
@ResponseBody
@RequestMapping(value="/course/result.action", method=RequestMethod.POST,produces="text/plain;charset=UTF-8")
public String result(String name,HttpServletResponse response){
System.out.println("Ajax获取值:"+name);
System.out.println("11111");
int result = this.service.findCourseName(name);
response.setContentType("application/json;charset=UTF-8");
/*response.setCharacterEncoding("UTF-8");*/
System.out.println("查询条目数:"+result);
if(result==1){
return "error"+name;
}
return "ok"+name;
}
1、为什么要加!result
2、在类上加/course,方法上加/result.action
用spring+ajax可以像我这么写,不一定要先传controller层
参考下这个吧
$.ajax({
type:'get',
url:"/user/isUserExits.do",
data:{"regionId":regionId,"loginName":loginName},
cache:false,
dataType:'json',
success:function(data){
var obj = eval(data);
if(obj.result == true){
return false;
}
}
});
后台方法参考下这个格式
/***
* 检查用户是否存在
*/
@ResponseBody
@RequestMapping("/winshare/user/isUserExits")
public String isUserExist() throws Exception{
String regionId =WebContext.getRequest().getParameter("regionId");
String loginName =WebContext.getRequest().getParameter("loginName");
boolean isExits = false;
JSONObject json = new JSONObject();
json.put("result", isExits);
return json.toString();
}
你可能是缺了这段代码。。
/**
* 向浏览器写入JSON字符串
* @param json
* @param response
*/
try {
response.setContentType("application/json;charset=UTF-8");
response.getWriter().print(result.toJSONString());
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
你的!result这个是struts的写法,,把这个去掉就好了,,