2012-01-11 93 views
0

我有一個表格,我在settings.ctp文件中加載了一個外部php文件[name#settings_profile.php]。CakePHP:使用AJAX更新DIV內容

代碼段從settings.ctp

<table> 
    <tr> 
     <td rowspan="2" id="upload-response-message"> 
      <?php include("settings_profile.php"); ?> 
     </td> 
    </tr> 
</table> 

settings_profile.php

<?php 

$image_path = $user['User']['image_path']; 
if (!empty($image_path)) { 
    echo $this -> Image -> resize($image_path, 100, 200); 
}else{ 
    echo 'EMPTY' ; 
} 
?> 

產生從settings_profile.php的輸出如下

[從源代碼複製]
<table> 
    <tr> 
     <td rowspan="2" id="upload-response-message"> One 
      <img src="/dearmemoir/uploads/resized/image.jpg" alt="thumb" /> 
     </td> 
    </tr> 
</table> 

$user['User']['image_path']內容由使用AJAX調用控制器更新,我試圖重新加載使用表內setting_profile.php文件 -

function showUploadResponse(data) { 
     alert (data.status); 
     if(data.status == 1) { 
     $("#upload-response-message").load("settings_profile.php #upload-response-message");  
     } 

    } 

但內容是從來沒有在頁面更新。任何幫助?

回答

0

您正在打破MVC範例和CakePHP約定。如果你在一個不是CakePHP幫手的視圖中包含一個外部php文件,那麼你做錯了什麼。

如果這就是settings_profile.php,那麼刪除它並將功能移到控制器或組件。然後將圖像分配給傳遞給視圖的變量。

如果您使用的是Ajax,然後回撥給服務器,那麼您的頁面將不會重新加載,以便再次調用視圖中包含的代碼。相反,將有關調整大小的圖像的信息傳回給您的JavaScript文件並通過javascript更新表格。

//Pseudo Code 

//Page is Loaded 

//Ajax call made back to the server to resize the image 
//Server resizes the image and sends the new image src back to the script 
{Image:{name: "newImage", src: "/dearmemoir/uploads/resized/image1.jpg"}} 
var returnedData = resultsFromAjax; 

//Use javascript to update the image 
var imgElement = document.getElementById('ProfileImageId').setAttribute("src", returnedData.Image.src); 

這應該會更新您的圖片!