我通過cfcontent調用來流式傳輸圖片,並試圖在允許用戶將它們旋轉90度後刷新圖片。在我的主要照片頁面中,我有一個精選圖片div,一個圖庫div和一個照片細節div。在加載頁面時,除非有會話變量存在,否則特色/圖庫div將被取消填充,在這種情況下會包含相關模板。如果div未填充,單擊導航欄菜單將觸發ajax調用以加載所選圖片。在ajax調用後cfcontent不會刷新
這一切都運行良好。我的問題是當選擇並加載圖片時,以及用戶想旋轉它時。旋轉按鈕會觸發一個調用來旋轉並保存圖片(該圖片有效),然後嘗試刷新特色/圖庫div以顯示更新後的圖片。這是它破裂的地方。儘管圖片是旋轉的,刷新整個頁面會以更新後的形式顯示,但ajax調用不會顯示更新後的圖片。這些刷新調用在附加到其他事件處理程序時已成功使用,所以我不認爲它們被錯誤地調用。也許有什麼神祕的使用cfcontent?
這裏是我在隔離的相關位的嘗試:
主頁:
<div id="featured_pic">
<cfif isDefined('session.currentPhotoName') and #session.currentPhotoName# neq "">
<cfinclude template="featuredImage.cfm">
</cfif>
</div>
<div id="gallery_container">
<cfif isDefined('session.category') and isDefined('session.param')
and #session.category# neq "" and #session.param# neq ""
>
<cfinclude template="photoGallery.cfm">
</cfif>
</div>
特色image.cfm:
<cfif isDefined('url.file_name')>
<cfset session.currentPhotoName = #url.file_name#>
</cfif>
<cfoutput>
<cfset thisImage = #session.currentPhotoName#>
<img
id="photoPlaceholder"
src="/#application.root_name#/administration/PhotoManagement/displayPhoto.cfm?thisImage=#thisImage#"
width="600px"
/>
</cfoutput>
DisplayPhoto.cfm:
<cfcontent
type = "image/*"
file = "C:\#replace(application.local_file_path, '/', '')#\Photos\#thisImage#"
deleteFile = "No"
>
和js t Ø做到這一點(包裹在$(文件)。就緒()):
$('#rotate').live('click', function(){
var id = $('#docID').val();
var title = $('#title').text();
title = $.trim(title);
// rotate the image and refresh the details container
$('#details_container').load('Administration/PhotoManagement/photoDetails.cfm', {'DOC_ID': id, 'title': title, 'rotateFlag': true}, function(response, status, xhr) {
if (status == "error") {
var msg = "Sorry but there was an error: ";
$("#details_container").html(msg + xhr.status + " " + xhr.statusText);
}
});
// refresh the gallery
var category = $('#currentCategory').val();
var param = $('#currentParam').val();
$.get(
'Administration/PhotoManagement/photoGallery.cfm',
{category:category, param:param},
function(response, status, xhr){
if (status == "error") {
var msg = "Sorry but there was an error: ";
$("#photos").html(msg + xhr.status + " " + xhr.statusText);
} else {
$('#gallery_container').html(response);
}
}
);
// refresh the featured image
$('#featured_pic').load('Administration/PhotoManagement/featuredImage.cfm',
{'file_name': title});
});
注意,作爲一個新手到阿賈克斯,我一直在嘗試.load(),獲得(),和。 ajax()看看有什麼作用。從jQuery In Action中,我知道我應該使用GET來執行這些操作,是真的嗎?
編輯:下面的建議下,我試着給它:
$.ajax({url:'Administration/PhotoManagement/featuredImage.cfm',
cache: false,
data: {file_name: title},
success: function(response){
$('#featured_pic').html(response);
alert('success');
}
});
,我也試着設置
$.ajaxSetup({ cache: false});
我的$(document)。就緒()內,無濟於事。圖片旋轉,如果我刷新整個頁面,我可以看到更改,但ajax調用,雖然它告訴我我已經成功,但不顯示更新的圖片。
啊......我明白了。所以添加?_ = [time_stamp],或者只是使用$ .ajax(cache:false)來代替? – earachefl
user724075,只需添加諸如{url:'Administration/PhotoManagement/featuredImage.cfm?cachebreaker ='+ new Date() –
正如在編輯的問題中指出的那樣,我試過設置cache:false無濟於事。 – earachefl