jQuery.post的dataType与Javascript的eval()

2019-06-15 00:00:00 post jquery dataType

jQuery.post()看起来是不是挺怪啊,其实不就是$.post()嘛,哈哈哈。

众所周知,$.post非常好用也非常常用,它的四大参数也是赫赫有名,如下:

$.post(url,data,function,dataType);

OK,前三个参数比价简单,分别是url:请求抛给的地址;data:请求携带的参数;function请求执行成功后回调的函数;

第四个其实也挺重要的,就是服务器响应的数据类型,一般指的是xml、json。需要注意的是啥捏,如果这个参数你不指定(当然data、function、dataType都是可选参数,都可以不指定),服务器返回的数据,会默认的是字符串格式哦。

所以如果指定了是json格式的话,我们对返回的数据就可以执行进行对象化的操作,如果没指定的话,就需要先用eval()函数转换为对象再进行操作了。

举个栗子如下,这是个登录的例子,$.post()没有使用dataType参数,所以针对返回的function(data){}中的data其实是个字符串,需要var result=eval(‘(‘+data+’)’);进行转换。如果添加上参数dataType为json类型,那就直接var result=data或者直接对data进行操作即可。

PS:注意后端返回的数据为:out.print(“{\”success\”:false}”);

    <script type="text/javascript">
        function login(){
            var userId=$("#userId").val();
            var userPassword=$("#userPassword").val();
            if(userId===""||userPassword===""){
                $.messager.alert('提示','员工编号及密码不能为空!','info');
                return false;
            }
            $.post("/BankStatistics/LoginServlet?ran='+Math.random()",
                {userId:userId,userPassword:userPassword},
                function(data){
                    var result = eval('('+data+')');
                    if (result.success===true){
                        window.location.href="main.jsp";
                        return true;
                    }
                    else{
                        $.messager.alert('提示','员工号或密码有误,请核准!','info');
                        return false;
                    }
                }//function(data)
            );//$.post
        }//login()
    </script>

OVER!

相关文章