ThinkPHP自动验证的问题 thinkphp在model中定义了自动验证之后,使用$this->display(模板)之后,之前页面输入的所有东西就没有了,请问在thinkphp中有什么方法可以让以前输入的东西还在,并且聚焦到错误的输入框内。thinkphp 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 给你个思路如果你用的ajax,那当$create()表单验证失败时,用getError()方法获取错误信息,将之前验证时传过来的参数加上错误信息返回过去,ajax那里设置回调函数对信息进行处理。如果不是ajax的话,可以考虑在模板中使用session值作为错误信息,没有时写空字符串,验证失败时将错误信息写入对应session,返回后模板将进行显示,验证成功后注意清除对应session。聚焦的话如果多个填错你打算聚到哪个? 模板页面用jquery的Ajax方法提交到action,action中做判断,根据不同的错误返回不同的值,末班页面根据不同的返回值,输出不同的错误提示,且定位到指定的输入框。 刚才点错了,不好意思还想追问你一个问题,是thinkphp的ajax上传的问题,在百度上查是说,在页面上加一个iframe然后加几个input框,可是我照的网上说的加完之后,没有反应。后台可以接收到上传 的文件。还是继续使用ajaxReturn返回json数据。能不能贴一下源码 $.post("{:U('index/index/check')}", {name:name}, function(result){ if(result == -1){ alert('输入名字不存在'); return false; }else if(result == -2){ alert('输入名字不合法'); return false; } }); index/indexAction.class.phpfunction check(){ $name=$_POST['name']; $map['name']=$name; $result=M('user')->where($map)->find(); if($result){ echo -1;exit; } if(!isAble($name)){ echo -2;exit; }} 上面的第一个alert应该说是已经存在 可以贴出你的代码,让我们look一下 <form method="post" action="__URL__/uploadVideo" enctype="multipart/form-data" id="upload" target="ajaxUpload"> <input type="hidden" name="ajax"/> <input type="file" name="newico"/> <input type="submit" name="submit" value="submit"/> </form><iframe name="ajaxUpload" src="" frameborder="0" SCROLLING="no" style="display:none" id="ajaxUpload"> <input type="hidden" name="_AJAX_SUBMIT_" value="1"/> <input type="hidden" name="_uploadFormId" value="upload"/> <input type="hidden" name="_uploadFileResult" value="result"/> <input type="hidden" name="_uploadResponse" value="uploadComplete"/> <input type="hidden" name="_uploadReplace" value="1"/> <input type="hidden" name="_uploadFileType" value="jpg,gif,png,swf" /> <input type="hidden" name="_uploadSavePath" value="/Public/Images/user/"/> <input type="hidden" name="_uploadSaveRule" value="time"/> <input type="hidden" name="_uploadFileSize" value="20480"/> </iframe>public function uploadVideo(){ //dump($_POST); $info = $this->upload('temp'); } public function upload($module = '', $path = '', $thumb = '', $width = '', $height = '') { $module = $module = ""?'temp':$module; switch ($module){ case 'temp':$path = C(ATTACHDIR) . '/temp/' . $path; break; case 'storehouse':$path = C(ATTACHDIR) . '/storehouse/' . $path; break; case 'shop':$path = C(ATTACHDIR) . '/shop/' . $path; break; case 'trader': $path = C(ATTACHDIR) . '/trader/' . $path; break; case 'group': $path = C(ATTACHDIR) . '/group/' . $path; break; case 'my': $path = C(ATTACHDIR) . '/avatar/' . $path; break; default:$path = C(ATTACHDIR) . '/file/' . $path; } if (!is_dir($path)) @mkdir($path); import("ORG.Net.UploadFile"); $upload = new UploadFile(); $upload->maxSize = C(ATTACHSIZE); $upload->allowExts = explode(',', strtolower(C(ATTACHEXT))); $upload->savePath = $path; $upload->saveRule = 'uniqid'; //$upload->allowTypes=array('jpg'); //empty($thumb)?$upload->thumb = C(ATTACH):$upload->thumb = $thumb; //empty($width)?$upload->thumbMaxWidth = C(THUMBMAXWIDTH):$upload->thumbMaxWidth = $width; //empty($height)?$upload->thumbMaxHeight = C(THUMBMAXHEIGHT):$upload->thumbMaxHeight = $height; if (!$upload->upload()){ if($this->isAjax()){ $this->ajaxReturn(array("errorMsg"=>$upload->getErrorMsg()),'uploadError',2); }else{ return $this->error($upload->getErrorMsg()); } }else{ if($this->isAjax()){ $this->ajaxReturn(array('info' => 'info'),'info',1); }else{ return $upload->getUploadFileInfo(); } } } 问题已经解决。做一个static方法就可以了。结贴 由于套接字没有连接并且没有提供地址,发送或接收数据的请求没有被接受。 配置appserv出现的问题 如何实现PHP的数组include any? 在linux下用jpgraph画图,字体成土黄色,一直搞不好,怎么回事? 谁能给这个简单的php加上详细注释 抓取别人网站上有POST的页面,在本地能不能显示出来呢? 怎样去判断客户端打开了一个页面没有执行任何动作? 怎样完成这样的功能? 参数传递问题 请大侠帮忙,如何实现“正在连接。。。请稍候”的效果 php 多选按钮取值或者去值 正则拿网站实例 问题
还想追问你一个问题,是thinkphp的ajax上传的问题,在百度上查是说,在页面上加一个iframe然后加几个input框,可是我照的网上说的加完之后,没有反应。后台可以接收到上传 的文件。还是继续使用ajaxReturn返回json数据。能不能贴一下源码
$.post("{:U('index/index/check')}", {name:name}, function(result){
if(result == -1){
alert('输入名字不存在');
return false;
}else if(result == -2){
alert('输入名字不合法');
return false;
}
}); index/indexAction.class.php
function check(){
$name=$_POST['name'];
$map['name']=$name;
$result=M('user')->where($map)->find();
if($result){
echo -1;exit;
}
if(!isAble($name)){
echo -2;exit;
}
}
<input type="hidden" name="ajax"/>
<input type="file" name="newico"/>
<input type="submit" name="submit" value="submit"/>
</form>
<iframe name="ajaxUpload" src="" frameborder="0" SCROLLING="no" style="display:none" id="ajaxUpload">
<input type="hidden" name="_AJAX_SUBMIT_" value="1"/>
<input type="hidden" name="_uploadFormId" value="upload"/>
<input type="hidden" name="_uploadFileResult" value="result"/>
<input type="hidden" name="_uploadResponse" value="uploadComplete"/>
<input type="hidden" name="_uploadReplace" value="1"/>
<input type="hidden" name="_uploadFileType" value="jpg,gif,png,swf" />
<input type="hidden" name="_uploadSavePath" value="/Public/Images/user/"/>
<input type="hidden" name="_uploadSaveRule" value="time"/>
<input type="hidden" name="_uploadFileSize" value="20480"/>
</iframe>public function uploadVideo(){
//dump($_POST);
$info = $this->upload('temp');
}
public function upload($module = '', $path = '', $thumb = '', $width = '', $height = '') {
$module = $module = ""?'temp':$module;
switch ($module){
case 'temp':$path = C(ATTACHDIR) . '/temp/' . $path;
break;
case 'storehouse':$path = C(ATTACHDIR) . '/storehouse/' . $path;
break;
case 'shop':$path = C(ATTACHDIR) . '/shop/' . $path;
break;
case 'trader': $path = C(ATTACHDIR) . '/trader/' . $path;
break;
case 'group': $path = C(ATTACHDIR) . '/group/' . $path;
break;
case 'my': $path = C(ATTACHDIR) . '/avatar/' . $path;
break;
default:$path = C(ATTACHDIR) . '/file/' . $path;
}
if (!is_dir($path)) @mkdir($path);
import("ORG.Net.UploadFile");
$upload = new UploadFile();
$upload->maxSize = C(ATTACHSIZE);
$upload->allowExts = explode(',', strtolower(C(ATTACHEXT)));
$upload->savePath = $path;
$upload->saveRule = 'uniqid';
//$upload->allowTypes=array('jpg');
//empty($thumb)?$upload->thumb = C(ATTACH):$upload->thumb = $thumb;
//empty($width)?$upload->thumbMaxWidth = C(THUMBMAXWIDTH):$upload->thumbMaxWidth = $width;
//empty($height)?$upload->thumbMaxHeight = C(THUMBMAXHEIGHT):$upload->thumbMaxHeight = $height; if (!$upload->upload()){
if($this->isAjax()){
$this->ajaxReturn(array("errorMsg"=>$upload->getErrorMsg()),'uploadError',2);
}else{
return $this->error($upload->getErrorMsg());
}
}else{
if($this->isAjax()){
$this->ajaxReturn(array('info' => 'info'),'info',1);
}else{
return $upload->getUploadFileInfo();
}
}
}