2013-09-25 18 views
0

這是我目前的情況和問題。我有2個下拉列表,當我改變選擇的第一個,第二個填充數據取決於我選擇的(因爲它使用ajax當然)。 當我向@Controller提交數據時,它會將我返回到同一頁面,並且當我嘗試再次執行相同操作時(選擇第一個下拉列表中的選擇選項以獲取第二個有效信息),無論我選擇什麼,我都會從中獲取信息先前的請求(在我返回到該頁面之前的舊請求)。那就是:控制器獲取錯誤信息(前一頁中的舊信息),因爲它使用舊的請求信息填充第二個下拉列表。Liferay @ResourceURL在ajax調用上緩存參數

就像我的ajax調用有一些緩存打開並使用舊的信息。這是怎麼看起來像我的代碼

<portlet:resourceURL var="getURL" id="dataurl" escapeXml="false"></portlet:resourceURL> 

腳本:

<script> 
var type = $("#pi_selectType option:selected").val(); 

$.ajax({ 
    method : "POST", 
    url : "${getURL}", 
    data : { 
     info1: "${PO.data1}", 
     info2 : type 
    }, 
    dataType : "json", 
    success : function(data) { 
    .... 
}); 
<script> 

我試圖在Ajax調用添加參數:

cache: false 

,但問題仍然存在。

是否有辦法後ResourceMapping請求,或類似的東西來重置Portlet的URL,因爲我認爲這可能解決這個問題。歡迎任何建議。

+0

您使用6.0或6.1的哪個版本的liferay? CE還是EE?另外你可能想看看Liferay的問題[LPS-3022](http://issues.liferay.com/browse/LPS-3022),根據這個問題,發生的事情是,不是創建一個新的'resourceURL'新參數,它將新的參數添加到舊的'resourceURL'中,由此它提供相同的數據。要知道是否屬於這種情況,請在Firefox中安裝Firebug,並檢查AJAX請求和Firebug控制檯中生成的URL。 –

回答

0

使用當前時間戳作爲第三個參數。過去我遇到過這樣的問題,這就是我解決問題的方法。

data : { 
     info1: "${PO.data1}", 
     info2 : type, 
     info3 : <current timestamp long> 
    }, 

通過將當前時間戳作爲參數附加到請求,它始終被視爲新的請求。