• javascprit form表单提交前验证以及ajax返回json


      1.今天要做一个手机验证码验证的功能。需求是前端页面点击发送 短信验证码,后台接收后通过ajax返回到前端,之后前端在提交时候进行验证。思路很简单,不过做的过程还是学到不少的东西、

      1.ajax请求后返回

     returning 405 Method Not Allowed

     原因是我后台返回的时候没有加上:

    @ResponseBody
    注解。加上后返回的数据是json字符串,但是js只能操作json对象。需要把json字符串转为json对象。
    一般的有三种方式
    1.JSON.parse();如
    var json = '{"key":"value","jian":"zhi"}'; 
    var obj =JSON.parse(json); 
    console.log(obj); //控制台返回 
    Object console.log(obj.key); //控制台返回 
    value console.log(obj.jian); //控制台返回  
    

     2.通过eval 函数 如:

    <script type="text/javascript">
        var json = '{"key":"value","jian":"zhi"}';
        var obj = eval("(" + json + ")");
    
        console.log(obj);         //控制台返回  Object
        console.log(obj.key);     //控制台返回  value
        console.log(obj.jian);    //控制台返回  zhi
    
    </script>
    

      二者区别是evel方法 会执行json字符串里的代码。比如下面的value 会返回2

    var value = 1;
    var jsonstr = '{"name":"jifeng","company":"taobao","value":++value}';
    
    var json2 = JSON.parse(jsonstr);
    console.log(json2);
    console.log('value: '+ value);          
    

      3.调用jquery的 $.parseJSON(string);用法同上。

    参考:http://blog.csdn.net/qq_31655965/article/details/52037197

    2.form表单提交前验证。 

       如果form表单是submit,则submit时候会直接提交,而不会验证。然后网上搜了很多,说是默认的submit是直接提交,可以使用button来代替onclick

    this.form.submit();     //直接提交表单
    this.form.onsubmit();   //调用form的onsubmit方法
    this.form.fireEvent('onsubmit'); //同上,
    

      

    <form action="http://www.baidu.com/s?wd=this.form.submit%28%29%3B&cl=3" method="post" name="form1" onsubmit="return alert('已提交!'); return false;"> 
        <table align="center" width="420px" cellPadding="2" cellSpacing="1" bgcolor="#A4B6D7"    style="word-wrap:Break-word;">                
            <tr style="cursor: hand;background:#d7e3f6" > 
                <td width="20%" align="right">条型码</td> 
                <td><input style="90%" type="text" name="GOODSNUM"   size="30"  maxlength="8" ></td> 
            </tr> 
            <tr> 
                <td align="center" colspan="2"> 
                    <input type="button" name="save" value="保存" onclick="if((confirm('确定要提交吗?'))) this.form.submit();"/> 
                </td> 
            </tr>  
        </table> 
    </form> 
    

      然后自己测试后发现这种方式不行,虽然可以再提交前验证,但是当验证过了之后,发现提交没反应了。。。 

    参考:http://www.cnblogs.com/jiechn/p/3979433.html

    然后又重新用jquery来下了下发现可以。

      

     $(document).ready(function ()
         {
             $('#next').click(function()
             {
                 var code = $("#verifyCode").val();
                 if(code == null || code == ""){
                     alert("请输入手机验证码");
                     return false;
                 }else if(vcode == null  || vcode == "") {
                     alert("请发送手机验证码");
                     return false;
                 }else if(code != vcode){
                     alert("验证码不正确");
                     return false;
                 }
                 $('#form1').submit();
             });
         });
    

      

    <input type="button" id="next"  value="下一步" id="next" style="background-color:#ff2e2e; height:100px;
    		  100%;"/>
    

      亲测这种方式可以。

  • 相关阅读:
    R语言中基于混合数据抽样(MIDAS)回归的HAR-RV模型预测GDP增长
    R语言马尔可夫体制转换模型Markov regime switching
    php设计模式--简单介绍
    css字体图标的使用方法
    linux系统管理--top命令
    linux系统管理--查看进程
    linux系统管理--进程管理
    用户体验时代的9条建议
    【转】纯手工玩转 Nginx 日志
    【转】一分钟内检查Linux服务器性能
  • 原文地址:https://www.cnblogs.com/thinkingandworkinghard/p/7044006.html
Copyright © 2020-2023  润新知