前台页面
-----------
<script>
$(document).ready(function(){
$('#myform').submit(function(){
$.ajax({
url:'/back',
data:{email:$("#email").val()}
type:'post',
success:function(data) { alert(data); }
});
});
});
</script>
<form id="myform">
您的信箱 <input type="text" name="email" id="email"><br>
<input type="submit" value="提交">
</form>
后台controller
-----------------
@RequestMapping("/back")
@ResponseBody
public String back(HttpServletRequest request){
String email = request.getParameter("email"); String content = "my email is: " + email;
System.out.println("test:" + email); // 这里测试是否取得了email值
return content;
}
按照如上的代码逻辑,我的期望是:如果在前台的表单框输入 abc@123.com,点提交按钮,则弹出对话框 my email is: abc@123.com 同时后台会有测试 test: abc@123.com 输出。
但是实际的运行情况是:
1、用IE浏览器,第一次表单中输入abc@123.com 点提交后,页面无弹出框,后台有测试输出 test: abc@123.com 输出
第二次之后,都正常。页面有弹出框my email is: abc@123.com,后台也有测试输出 test: abc@123.com
2、用遨游浏览器,无弹出框,后台是否有输出,完全看心情,有时有,有时没有。
求教到底是哪里错了!!!拜谢!!!
------解决思路----------------------
controller里面不能写return content;改成
PrintWriter out = response.getWriter();
out.write(content);
当然,back方法里面得加上HttpServletResponse参数。