我有一个表格,我在settings.ctp文件中加载外部php文件[name#settings_profile.php]。
来自 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>
通过使用AJAX调用Controller来更新$user['User']['image_path']
的内容,我正在尝试使用 -
function showUploadResponse(data) {
alert (data.status);
if( data.status == 1 ) {
$("#upload-response-message").load("settings_profile.php #upload-response-message");
}
}
但内容从未在页面中更新过。有什么帮助吗?
答案 0 :(得分: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);
那应该更新你的形象!