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页面再跳转到指定页面,所以无效。(没有做深入研究)。