jquery ajax验证
发布网友
发布时间:2022-04-22 19:34
我来回答
共2个回答
热心网友
时间:2022-04-22 21:03
首先你要理解Ajax的原理,通俗的说是:
Ajax----请求--->服务器---响应---->Ajax回调
意思是如果你用ajax发送请求,最后不管怎么样,响应结果都会回到这个ajax,这是异步操作。
所以通常Ajax的配置根本不配返回路径,即使配了<return>ajax也不认识
<action="ajaxAction" class="xx" method="xx">
</action>
而struts2的验证框架通常适合于提交表单,这样它就可以
<action="formAction" class="xx" method="xx">
<return name="success">xxx.jsp</result>
<return name="input">xxx.jsp</result>
</action>
那么总结下:如果使用Ajax提交,它会进入xml里面进行校验,而且会返回input,但是返回的input数据到Ajax的回调函数里面了,而且返回的是一个页面,你可以通过data.responseText获得,但是获得也没什么意义。
解决方法两种:
①Ajax提交的话不使用struts2的XML校验,改用直接在Action method中校验,如果为空使用response.getWriter().print()打印错误消息,然后Ajax回调函数进行相关处理
②不使用Ajax提交,使用表单submit提交,使用struts2的XML校验,这样绝对能在<s:fielderror/>中输出错误消息
热心网友
时间:2022-04-22 22:21
data.substring(0, 3) == "yes") ????
这个.得出来的有问题..
"yes" 这个东西.只有3个长度..可楼主取的是4个的长度..
ajax这么写也是对的.不过有个更好的办法..
function(data) {
if (data.substring(0, 3) == "yes") {
alert("ok");
你返回回的直接是一结果.
直接换成.function(data){if(data.length>0){alert(data);}}就不用再去substring 也不用去判断了..