2013-09-05 108 views
1

我的頁面創建了一些隨機變量來挑選圖紙的獎品和獲勝者,並且我想在獲勝者點擊一個按鈕以獲得獎品後將獲獎者和他們的獎品寫入表格。按下按鈕或幕後操作頁面後執行cfquery嗎?

問題是我希望他們留在頁面上,以便獎品可以再次被挑選,如果它沒有聲稱。

我能想出的最佳解決方案是cfinput按鈕引用的操作頁面,但我不希望操作頁面打開,我只希望該頁面上的cfquery在後臺運行。

這裏是我的查詢的例子:

<cfquery name="updateQuantity" datasource="christmas"> 
UPDATE PRIZES 
SET QUANTITY = QUANTITY - 1 
WHERE prize_ID = #prizeID# 
</cfquery> 

我試圖使我的按鈕「提交」按鈕,使用CFIF isDefined(「form.Submit」)運行在同一頁上的CFQUERY,但提交按鈕刷新頁面(這我不想要的),而是將當前會話的prizeID的下一個挑贏家:

<cfform> 
<cfinput name="submit" type="submit" value="Claim Your Prize!" onClick=""> 
</cfform> 

<cfif isDefined("form.Submit")> 
<cfquery name="updateQuantity" datasource="christmas"> 
UPDATE PRIZES 
SET QUANTITY = QUANTITY - 1 
WHERE prize_ID = #prizeID# </cfquery> 
</cfif> 

prizeID由隨機選擇獎確定。

+0

如果您不喜歡Leigh關於ajax的建議,則可以將您的動作頁面放入1像素的iframe中。您仍然必須使用js來更改父頁面的內容。 –

+3

不管你採用什麼方法,使用查詢參數和範圍你的變量。 –

+1

首先...不要使用cfform ....第二..不要使用cfajax的東西。我會爲此使用ajax,但使用jquery或其他東西。另外,如果你只是減少查詢次數,那麼有人可以在一秒鐘內利用它,並將計數減少到零。 –

回答

1

聽起來像ColdFusion.Ajax.submitForm會爲你工作。

一般來說,我認爲您正在尋找一個AJAX請求。

+3

請勿使用ColdFusion的UI小部件。他們是廢話。使用標準標記和JQuery(等)。它使得更好的結果,並且是一種可移動的學習技能。像CFFORM/CFAJAX這樣的ColdFusion的UI嚮導並不是你的武器庫中的有用技能。 –

+0

請不要使用任何ColdFusion UI,JS,AJAX的東西。他們往往會導致更多的問題,而不是他們的價值。 –

+0

我自己並沒有使用CF UI的東西,但是當每個有關某項技術的問題的答案都涉及jQuery時,我覺得很煩人。有時候你想要解決附加技術的問題。因此,一個ColdFusion-only答案和一個指向一般答案類的不可知論者評論。 – cherdt

3

亞當是正確的。

雖然AJAX是你所追求的,但ColdFusion的AJAX相關標籤並不是要走的路。

花時間學習JQuery和AJAX(它不是太難,而CF社區有一些很棒的例子和指南)並且正確地做到這一點;根據您的示例要求,您應該立即啓動並運行。

通過這種方式,您可以正確管理您可能需要的任何日誌記錄和錯誤處理。祝你好運!

+1

雖然沒有直接回答問題,但我認爲這是一個很好的答案。首先:停止使用CFFORM,嘗試使用HTML和JQuery。第二:如果你有問題(它有很好的文檔記錄,並不是很困難,所以你應該沒問題)......修改你的問題或者問一個新問題,我們可以幫助你使用JQuery。 Stack Overflow上的JS/JQuery社區比CF人員還要大得多。所以更容易得到幫助。 –

+0

回想起這件事,但是有可能使用jquery發佈或發送我的變量到我的動作頁面以通過cfquery進行處理嗎?或者,jquery/ajax可以在按下按鈕時爲我運行cfquery嗎?很難找到我需要的所有ajax/jQuery語言。 – user2733971