需求如下:
用户名可以是[b]中文[/b]、英文及数字。
正确的代码如下[b](重点注意第七行的data传值)[/b]:
问题:
本来不加data时,[b]只要输中文的时候[/b](不管type是get还是post),在chrome和IE浏览器下,后台就接收不到reguser.getUsername的值,报null。(火孤倒是都正常的)
于是想到用url带参的方式来传值
即:url: "usercheckusername.html?username="+$("#username").val() ,
但后台依然接收不到数据。
转而想到用data属性传值
即:data:'usera='+ $("#username").val(),
但发现后台接收到usera的值,依然为空。(如果不用该校验框架,这么写肯定没错的。)
随即去网上查阅了很多资料,不知道这里是不是一个BUG,改为
[b][color=red]data:{'usera':function(){return $("#username").val()}},[/color] [/b]
就可以了,而type:'post'是因为有中文,用get得自己转码,不然会乱码。
------------------------
后记:不知道这是不是formvalidator4.1.3版本的问题,还是所有的formvalidator都有此问题。
用户名:<input type="text" name="reguser.username" id="username">
用户名可以是[b]中文[/b]、英文及数字。
正确的代码如下[b](重点注意第七行的data传值)[/b]:
$("#username").formValidator({onShow:"请输入用户名,汉字、英文字母、数字,4-20个字符!",onFocus:"请您记住填写的用户名,以后登录时需要用到。",onCorrect:"该用户名可以注册!"})
.inputValidator({min:4,max:20,onError:"用户名长度不对,请重新输入!"})
.ajaxValidator({
dataType : "html",
async : true,
type : 'post',
data:{'usera':function(){return $("#username").val()}},
url: "usercheckusername.html" ,
success : function(data, textStatus){
if(data.indexOf("true")>-1){return true;}
if(data.indexOf("false")>-1){return "该用户名不可用,请更换用户名";}
return "服务器没有返回数据,可能服务器忙,请重试"
},
error: function(){alert("服务器没有返回数据,可能服务器忙,请重试");},
onerror : "该用户名已经存在,请更换用户名",
onwait : "正在对用户名进行合法性校验,请稍候…"
});
问题:
本来不加data时,[b]只要输中文的时候[/b](不管type是get还是post),在chrome和IE浏览器下,后台就接收不到reguser.getUsername的值,报null。(火孤倒是都正常的)
于是想到用url带参的方式来传值
即:url: "usercheckusername.html?username="+$("#username").val() ,
但后台依然接收不到数据。
转而想到用data属性传值
即:data:'usera='+ $("#username").val(),
但发现后台接收到usera的值,依然为空。(如果不用该校验框架,这么写肯定没错的。)
随即去网上查阅了很多资料,不知道这里是不是一个BUG,改为
[b][color=red]data:{'usera':function(){return $("#username").val()}},[/color] [/b]
就可以了,而type:'post'是因为有中文,用get得自己转码,不然会乱码。
------------------------
后记:不知道这是不是formvalidator4.1.3版本的问题,还是所有的formvalidator都有此问题。