Forums

Home » Liferay Portal » English » 3. Development

Combination View Flat View Tree View
Threads [ Previous | Next ]
toggle
Ranen Das
JSONArray dynamic drop down list- old data- cache issue - how to get rid?
January 8, 2013 2:08 PM
Answer

Ranen Das

Rank: Regular Member

Posts: 137

Join Date: April 6, 2011

Recent Posts

Hello,

I am using JSONArray to implement dynamic drop down, but I am facing a problem, can anyone tell me where I am wrong:-

here is the issue:-

1. I have 2 dropdown list, select list 1, list 2 will automatically populate, now suppose I have 2 values in list 1-
scenario 1 - I selected value 1 from list 1, I will get,say, 4 values in list 2.
scenario 2 - I select value 2 in list 1, now I get ,say, 3 values in the list 2 plus previously selected values. So how can I remove old values.

I used ResourceRequest/Response technique -

here is code snippet:-
 1
 2Java controller:-
 3
 4public void serveResource(ResourceRequest request, ResourceResponse response)    throws PortletException, IOException {
 5.......
 6.......
 7if (Validator.isNotNull(resourceId) && resourceId.length() != 0 && resourceId.equalsIgnoreCase("getRevenueList")) {       
 8               
 9                String currencyId = request.getParameter("currencyName");
10                List<Revenue> revenueList = null;
11                if(currencyId!=null && !currencyId.isEmpty())
12                    revenueList = getRevenue(Long.valueOf(currencyId));
13                JSONObject jsonFeed = JSONFactoryUtil.createJSONObject();
14                JSONArray jsonRevenuList = JSONFactoryUtil.getJSONFactory().createJSONArray();
15                if(revenueList!=null){
16                    for(Revenue revenue:revenueList){
17                        if(jsonRevenuList!=null)
18                            jsonRevenuList.put(revenue.getRevenueId()+ ":"+ revenue.getRevenue());
19                    }
20                }       
21
22                jsonFeed.put("jsonRevenuList", jsonRevenuList );               
23                response.setContentType("application/json");
24                response.setCharacterEncoding("UTF-8");
25                PrintWriter printWriter = response.getWriter();
26                printWriter.write(jsonFeed.toString());
27                printWriter.flush();
28                }
29
30Now in jsp:-
31
32
33jQuery("#selectCurrency").change(function() {   
34        var curr = jQuery("#selectCurrency").val();
35            var url = '<portlet:resourceURL id="getRevenueList"></portlet:resourceURL>';
36            jQuery.post(url, {currencyName : curr},function(data) {            
37                for(i=0;i<data.jsonRevenuList.length;i++){
38                jsonRevenuList = data.jsonRevenuList[i].split(":");
39                jQuery("#totalSales").append("<option value='"+ jsonRevenuList[0] +"'>"+jsonRevenuList[1]+"</option> " );
40          }                                     
41        });
42    });
43
44
45
46<select id="selectCurrency" name="currency">
47<option value=""></option>
48<option id="curencyName" value="<%= String.valueOf(currency1.getCurrencyId()) %>" selected="selected"> <%=currency1.getCurrencyName()%></option>
49</select>
50
51<tr><td>Total Sales</td><td><select id="totalSales"></select></td></tr>


Now what is happening here- in the first select - I have 3 currencies - US $, British Pound and Euro, so when I change one, it changes the second select list, 2nd time when I select different Currency, then it adds into existing data in the second list, so basically its getting old data and new data together, but I want new data everytime, so how to get that?

Regards,
R
Ranen Das
RE: JSONArray dynamic drop down list- old data- cache issue - how to get ri
January 9, 2013 6:12 AM
Answer

Ranen Das

Rank: Regular Member

Posts: 137

Join Date: April 6, 2011

Recent Posts

No reply????
Ranen Das
RE: JSONArray dynamic drop down list- old data- cache issue - how to get ri
January 9, 2013 6:57 AM
Answer

Ranen Das

Rank: Regular Member

Posts: 137

Join Date: April 6, 2011

Recent Posts

This might be a cache issue from Jquery -

1. Bcoz everytime when Controller gets called it returns only those required values, but it does not old values,

2. So, it has to be a cache issue.

Now How can I clear cache in Jquery????? anyone can tell me?
Ranen Das
RE: JSONArray dynamic drop down list- old data- cache issue - how to get ri
January 9, 2013 8:12 AM
Answer

Ranen Das

Rank: Regular Member

Posts: 137

Join Date: April 6, 2011

Recent Posts

This is how it works -

 1
 2jQuery("#selectCurrency").change(function() {
 3                        jQuery('#totalSales').empty();
 4                            var curr = jQuery("#selectCurrency").val();
 5                                var url = '<portlet:resourceURL id="getRevenueList"></portlet:resourceURL>';
 6                                jsonRevenuList = null;
 7                                jsonTestList = null;
 8                                jQuery.post(url, {currencyName : curr}, function(data) {
 9                                alert("2 ="+ data.jsonRevenuList.length);
10                                        for(i=0;i<data.jsonRevenuList.length;i++){
11                                        jsonRevenuList = data.jsonRevenuList[i].split(":");
12                                       
13                                        jQuery("#totalSales").append("<option value='"+ jsonRevenuList[0] +"'>"+jsonRevenuList[1]+"</option> " );
14                                       }
15                                       alert("3 = "+ data.jsonTestList.length);
16                                       for(i=0;i<data.jsonTestList.length;i++){
17                                        jsonTestList = data.jsonTestList[i].split(":");
18                                        jQuery("#totalSales1").append("<option value='"+ jsonTestList[0] +"'>"+jsonTestList[1]+"</option> " );
19                                       }
20                                    });
21                            });


The magic line is this - jQuery('#totalSales').empty(); calling the empty mathod