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的更多相关文章

  1. Html form 表单提交前验证

    可以使用form表单的onsubmit方法,在提交表单之前,对表单或者网页中的数据进行检验. onsubmit指定的方法返回true,则提交数据:返回false不提交数据. 直接看下面的代码: 1 & ...

  2. 使用form表单提交请求如何获取后台返回的数据?

    问题描述 一般的form表单提交是单向的:只能给服务器发送数据,但是无法获取服务器返回的数据,也就是无法读取HTTP应答包. 想要真正的半双工通讯一般需要使用Ajax, 但是Ajax对文件传输也很麻烦 ...

  3. JavaScript form表单提交与验证

    原网址:https://blog.csdn.net/vipwxs/article/details/79119701 一.form对象的属性: name:获取表单的名称,该name一般给JS使用 met ...

  4. Django之form表单提交并验证

    1.提交的时候会报错 2. 需要在setting里面注释掉一句话,关闭跨站请求检查. 3. 注释掉以后,理论上就不报错了.可我还是卡壳了. 4. 通过在网上找方法,修复错误. 原因:表单action字 ...

  5. form表单提交转为ajax方式提交

    <form action="xxx" method="get"> //action的值是请求的url地址 <div class="f ...

  6. form的onsubmit事件--表单提交前的验证最佳实现方式

    今天遇到了一个问题,页面中include了很多的公共页面(都是没有form的),并且里面好多的地方都是自行提交的(页面中加入一个type=“submit”域,然后js中写入sumbit.click来执 ...

  7. Form表单提交,js验证

    Form表单提交,js验证 1,  Onclick() 2, Onsubmit() Button标签 input (属性 submit  button )标签 Input type=button    ...

  8. a标签指定的url,在表单提交前进行js验证的实现

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...

  9. springmvc下js控制表单提交(表单提交前检验,提交后获取json返回值)

    这个问题我搞了四天,终于搞懂.因为对js很不熟悉.郁闷的是后台代码出错总可以设置断点调试,前端js代码出错只能通过浏览器提供一些运行数据来分析,很不习惯. 首先说下逻辑:这是一个注册功能,我希望,注册 ...

随机推荐

  1. Vue.js 使用注意事项

    Vue.js 使用注意事项 1 过滤器主要用于简单的文本转换,如果要实现复杂的数据变换,应使用计算属性 指令的使用 v-bind基本用于HTML元素上的属性,如id.class.href.src等 v ...

  2. 基于python实现GET和POST请求及token相关调用

    GET请求实例: #coding:utf- import requests parm={"}#封装登录参数 r=requests.get("http://space.test.co ...

  3. mojing手柄遥杆控制

    using UnityEngine; using UnityEngine.UI; using System.Collections; using MojingSample.CrossPlatformI ...

  4. Oracle 维护数据的完整性 一 索引

    简介:索引是用于加速数据存取的数据对象,合理的使用索引可以大大降低i/o 次数,从而提高数据的访问性能. 当我们从一张表中检索我们需要的数据是,oralce往往会进行全表扫描,就是遍历所有的数据行,来 ...

  5. 解析ES6 Promise

    ES6 Promise 概念之类的,大概读者都应该有所知道,接下来我们直入终点. 先让我们来看看什么是Promise吧,他是一个object,类,arry,function? 首先,学习它的时候应该讲 ...

  6. Starting vsftpd for vsftpd: [FAILED]问题的解决

    问题描述 [root@bigdatamaster etc]# rpm -qa| grep vsftpd vsftpd--.el6.x86_64 [root@bigdatamaster etc]# [r ...

  7. JavaScript自适应调整文字大小

    JavaScript自适应调整文字大小 今天有个任务,发现页面上的数字由于太长而与其他数字重叠了.这个数字还不能像文字那样只显示一部分,必须全部显示.想了一些办法都不行,最后把超过1000变成1K,大 ...

  8. 面试题目: 获取服务器IP和客户端IP

    [面试题目] 怎么获取服务器IP和客户端IP地址? I. PHP获取客户端IP, 可通过下面系统变量 1. $_SERVER['Remote_Addr'] 2. $_SERVER['HTTP_CLIE ...

  9. Mybatis的关联查询(一)

    一对一的关联查询 一.使用resultType进行输出映射   1. 创建一个新的PO类,由于要将查询出来的属性映射到新的PO类.所有该PO类中应该有查询出来的所有列对应的属性. //定义新的PO类, ...

  10. CentOS7配置中文

    CentOS7配置中文 yum install kde-l10n-Chinese -y vim /etc/locale.conf修改为zh_CN.UTF-8 vim /etc/environment添 ...