jquery ajax返回值result接收解析,以及javascript与jquery传递json格式/多个数据的方法,以及jquery,js post方法后,sendRedirect不跳转
我们将input传递给服务器,除了使用form表单的post,还可以使用js或jquery
1.js传递json格式数据
传递一个参数,我们用
xhr.send("tel="+tel)
这样的格式,但多个参数,就需要添加&,但需要注意,这个&要添加在下一个变量名的双引号中,而不是在外面。
xmlHttpRequsts.open("post","/login",true);
//设置post方式的头信息
xmlHttpRequsts.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
xmlHttpRequsts.send("tel="+tel+"&password="+password);
2.jquery传递json
jquery的传递方式与js相同,可以添加一个dataType声明
<script type="text/javascript">
function login() {
var $tel = $("#inputPhone").val();
var $password = $("#inputPassword").val();
$.ajax({
url: "/login",
type: "post",
data: "tel=" + $tel + "&password=" + $password,
dataType: "JSON",
success: function (result) {
if (result === 1) {
alert("登陆成功~");
} else if (result === 2) {
alert("登陆失败!");
}
}
});
}
</script>
3.result接收返回值
先看我们servlet的返回值,我们根据数据库中是否有tel和密码组合判断是否登陆成功,然后返回给jsp进行操作,但发现result接收servlet中的返回值,但并不是接收字符串,在这方面调试了很久,比方说out数字,result的type会是num,out “true”,“false”,result会是布尔值而非字符
之前一直错写为,苦苦想了半天,结果就是不弹出,下面是错误写法
if (result === "true") {
alert("登陆成功~");
} else if (result === "false") {
alert("登陆失败!");
}
此时result是布尔类型,而非字符串。
所以,接收result后直接用===就可以判断,不要用字符串比较。
//如果登录成功,创建session且跳转页面到主页
if(loginService.Login(user)){
// 登陆成功状态码 : 1
out.write("1");
}else{
// 输出登录失败状态码 : 0
out.write("0");
}
然后就可以判断成功了。
4.jquery,js post方法后,sendRedirect不跳转
个人思考可能原因是:js和jquery发送post请求时,servlet中的resp.sendRedirect失效问题,也许是这两种post与表单的post不一样,是拿一个值接收servlet的返回参数的,而不是跳转到servlet页面再跳转到指定页面,所以无效。(没有做深入研究)。