2014-04-07 106 views
0

我是ColdFushion的新手。我正在嘗試創建一個用戶可以查看小圖片的頁面。一旦他點擊一張圖片,另一張圖片就會出現在一個新的彈出窗口中。我不確定我的代碼中缺少什麼,但是當我點擊小圖片時,會彈出一個新窗口。即使設置了圖像路徑,新彈出窗口中也沒有圖像。有人可以給我一些關於如何解決這個問題的建議嗎?非常感謝!我的圖像如何在彈出窗口中不顯示?

編輯:我按照建議,並對我的代碼做了一些更改。但是,它仍然無法正常工作。有人能告訴我我錯過了什麼嗎?謝謝!

在full_article_view.cfm:

<!--- retrieve the full article as well as its images ---> 
<CFQUERY NAME="myQuery1" Datasource="mydb" > 
SELECT articles.article_ID, articles.article_title, articles.article_author,  
    articles.article_date, articles.article_content 
FROM articles 
INNER JOIN article_image_mapping ON articles.article_ID = 
    article_image_mapping.aim_articleID 
WHERE articles.article_ID = #URL.ID# 
GROUP BY article_image_mapping.aim_articleID 
</CFQUERY> 

<CFQUERY NAME="myQuery2" Datasource="mydb" > 
SELECT images.image_ID, images.image_thumbpath, images.image_fullpath 
FROM images 
INNER JOIN article_image_mapping ON images.image_ID = article_image_mapping.aim_imageID 
WHERE article_image_mapping.aim_articleID = #URL.ID# 
</CFQUERY> 


<!DOCTYPE html> 
<html> 
<head> 
    <title>Hi</title> 
    <meta charset="UTF-8"> 
</head> 
<body> 
    <!--- Page Title ---> 
    <h3>Full Article View</h3> 

    <!--- Page Content ---> 
    <div align="left"> 
     <!--- Display article title, author, date, and full content ---> 
     <cfoutput query="myQuery1"> 
      <b>#ucase(myquery1.article_title)#</b> 
      <hr> 
      <p style="color:##848181; font-size:12px">#myquery1.article_author#  
          :: #myquery1.article_date#</p> 
      #myquery1.article_content#<br/> 
     </cfoutput> 
     <br> 
     <!--- Display images associated with article---> 
     <cfoutput query= "myQuery2"> 

      <img src="#myquery2.image_thumbpath#" alt="image thumbnail" 
      onClick="ColdFusion.Window.create('Window1', 'This is a CF window', 
      'full_img.cfm?toshow=#myquery2.image_fullpath#', 
      {x:100,y:100,height:300,width:400,modal:false,closable:true, 
      draggable:true,resizable:true,center:true,initshow:true, 
      minheight:200,minwidth:200})"> 

     </cfoutput> 


    </div> 
</body> 
</html> 

在full_img.cfm:

<cfparam name="url.toshow" default=""> 

<cfoutput> 
<img src="#url.toshow#" alt="full image"> 
</cfoutput> 
+2

首先要做的事:擺脫'':https://github.com/cfjedimaster/ColdFusion-UI-the-Right-Way/blob/master/chapters/cfwindow/index.md –

+3

首先事情第一:修復SQL注入!然後將doctype更正爲'<!doctype html>'。 _然後_擺脫cfwindow的使用。 (如果在那時還存在問題,請用新代碼更新問題。) –

+1

雖然我們在這裏.....擺脫了「SELECT * FROM」。相反,只列出你需要的列(即使你需要所有列)。 –

回答

2

失敗的原因是因爲cfwindow預計加載回到文字的網址,而不是二進制數據。當你說ColdFusion.Window.create的第三個參數是圖像源時,你基本上試圖將二進制圖像數據加載到窗口內容中,這是行不通的。

有一個簡單的解決方法。建立一個新的名爲CFM,好了,任何你想要的,其代碼如下所示:

<cfparam name="url.toshow" default=""> 
<cfoutput> 
<img src="#url.toshow#"> 
</cfoutput> 

這CFM只需要在URL參數的圖像,並呈現HTML加載它。然後,修改原來的代碼使用這個新的URL:

onClick="ColdFusion.Window.create('Window1', 'This is a CF window', 
'test3.cfm?toshow=#urlencodedformat(iurl)#', 

在我上面的例子,test3.cfm是我的測試文件。

是的 - 也停止使用CF UI的東西。 ;)

+0

非常感謝您的建議。我真的很陌生。我不確定我是否完全理解你的代碼。我對我進行了一些更改,但仍然無法正常工作。你介意看看,讓我知道我失蹤了什麼?在此先感謝您的時間。 – user2203774

+0

出了什麼問題?你怎麼樣也添加輸出,即在img src之上,只輸出url.toshow的值。 –

+0

我認爲「點擊」在中不起作用。當我點擊圖片時,它不會打開一個新窗口。我試圖測試它的谷歌網址。 \t \t \t image thumbnail user2203774