2014-10-10 193 views
1

我正在使用MVC,并且我有一个按钮使用AJAX调用来删除站点上传的图像。PHP从控制器返回值到Ajax

这是我的模型:

public function remove_document($documentID, $documentName) 
    { 
     $objData = $this->objDB 
      -> setStoredProc('attritionRemoveDocument') 
      -> setParam('documentID', $documentID) 
      -> setParam('documentName', $documentName) 
      -> execStoredProc() 
      -> parseXML(); 

     return $objData->data->response;  

    } 

响应从这个回来或者是truefalse

这里是我的控制器:

public function deleteFile() 
    { 
     // Get the documentID we are removing 
     $documentID = $this->input->post('documentID'); 
     $documentName = $this->input->post('documentName'); 

     // Check if the file is even there 
     if (file_exists('./uploads/'.$documentName)){ 

      // Remove file 
      unlink('./uploads/'.$documentName); 
      $removeFile = $this->submit_model->remove_document($documentID, $documentName); 

      return $removeFile; 

     } 

    } 

最后,我的AJAX调用:

$('[name=deleteDocument]').click(function() { 

     var documentID = $(this).attr('documentID'), 
      documentName = $(this).attr('documentName'); 

     //Delete the image 
     $.ajax({ 
      type: 'POST', 
      url: '../deleteFile', 
      dataType: 'xml', 
      data: { 
       'documentID': documentID, 
       'documentName': documentName 
      }, 
      success: function(msg) { 

       // On Success, remove the current file section 
       console.log(msg); 

      } 

     }); 

    }); 

当我echo在控制器中$removeFile价值,我看到了true/false值但它永远不会使它到AJAX调用的成功功能。

任何想法?

+0

Ajax无法检索'PHP'函数的返回值。你需要使用'echo'来代替。 – 2014-10-10 16:58:23

+0

我改变它回声,但'console.log(味精);'仍然不显示值。还有什么我需要添加到'味精'? – SBB 2014-10-10 17:10:49

+0

您在ajax调用中的数据类型属性期望从服务器返回XML,这就是为什么我以我的方式回答问题的原因。尝试将其更改为'html' – Overachiever 2014-10-10 18:26:29

回答

0

在控制器

如果如果结果是在你的查看和成功部分

success: function(msg) { 

    if(msg=="OK"){ 

    alert("DELETED"); 

    }else{ 
    alert("NOT deleted"); 
    } 

你的控制器虚假

echo "NO" 

结果为真

echo "OK" 

寿如果您使用ajax,您的AJAX调用,则不会返回BOOL,而应该通过成功方法来控制结果。