2014-10-10 196 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,而應該通過成功方法來控制結果。