Home >Backend Development >PHP Tutorial >Thinkphp的ajax提交的问题

Thinkphp的ajax提交的问题

WBOY
WBOYOriginal
2016-06-23 14:02:46739browse

在做ajax提交的过程中遇到两个问题。
1:在使用ajax提交到一个action的method中之后,我又使用$this->upload()的方式调用了另一个方法。在这个方法中有需要返回错误或者成功的信息,所以使用了【return...】返回一个值,可是这个值就直接返回给前台了。。我想的是应该从提交到的method中返回到前台。。

2:使用$this->isAjax()判断返回错误,我是使用thinkajax提交的表单,所以在form下添加了一个可是还是判断不成功。。

请大家不吝赐教。。


回复讨论(解决方案)

我又使用$this->upload()的方式调用了另一个方法。 在这个方法中有需要返回错误或者成功的信息,所以使用了【return...】返回一个值,

你直接在你的method里面判断“这个方法的返回值就可以了呀”,然后给前台对应的返回提示信息。

第二个问题我感觉判断是多余的。

你直接在你的method里面判断“这个方法的返回值就可以了呀”,然后给前台对应的返回提示信息。
因为我这个站里面要上传许多文件,所以我想写一个通用的方法来上传文件,name这个上传文件的方法,就必然要返回上传是否成功的信息啊,所以就使用了return。。还有其他从方法里面带出信息,又不返回到客户端的方法吗??

第二个问题我感觉判断是多余的。 是可以不用判断,直接用ajax返回就可以了,就是想搞明白原因而已。。

 能否贴出简单代码,让我们给你分析一下。

能否贴出简单代码,让我们给你分析一下。

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()){		  		return $this->error($upload->getErrorMsg());			  }else{		  		return $upload->getUploadFileInfo();		  				  }	 }

   if (!$upload->upload()){
                  return $this->error($upload->getErrorMsg());              }else{
                  return $upload->getUploadFileInfo();
                            }
     }
改成:
  if (!$upload->upload()){
                  $this->assign("jumpUrl","你要跳转的method地址");
                   $this->error($upload->getErrorMsg());              }else{
                  return $upload->getUploadFileInfo();
                            }
     }

if (!$upload->upload()){
                  return $this->error($upload->getErrorMsg());              }else{
                  return $upload->getUploadFileInfo();
                            }
 ……  这样的话,要是出错,就跳转了,我想的是,还是给客户端返回json格式的数据,然后用js进行处理。。

 if (!$upload->upload()){
      return $this->error($upload->getErrorMsg());              
}else{
      return $upload->getUploadFileInfo();
}

 改成:
   if (!$upload->upload()){
       $returnmsg=array("isok"=>"false","msg"=>$upload->getErrorMsg());             
 }else{
       $returnmsg=array("isok"=>"true","msg"=>$upload->getUploadFileInfo());
  }

return $returnmsg;
不知道这样是可不可以...

引用 7 楼 nowphp 的回复:if (!$upload->upload()){
                  return $this->error($upload->getErrorMsg());              }else{
                  return $upload->getUploadFileInfo();
   ……

if (!$upload->upload()){
                  echo jsson_encode( $this->error($upload->getErrorMsg()); exit;             }else{
                  return $upload->getUploadFileInfo();
                            }

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn