javascprit form表單提交前驗證以及ajax返回json

來源:互聯網
上載者:User

標籤:obj   eve   pac   idt   value   overflow   alert   親測   amp   

  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="width: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;  width:100%;"/>

  親測這種方式可以。

javascprit form表單提交前驗證以及ajax返回json

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.