2013-10-24 37 views
1

我正在使用fullcalendar在我的struts2應用程序中構建一個日曆。但是......我遇到了一些問題。我們構建了一個高級搜索,使我們能夠過濾日曆事件服務器端並返回結果列表。我能夠得到大多數的一切正常工作,除了多選擇的選擇,我認爲這是因爲我使用我的jQuery錯誤。jQuery select values as list

我的ajaxLocationCalendar.action期望看到的位置列表,而不是多個位置的字符串。我有一個<select id="locationsSelect" multiple="multiple">有幾個選項。

我fullcalendar設置如下所示:

events: { 
    url: 'ajaxLocationCalendar.action', 
    data: { 
    'scheduleableCriteria.approvalStatus': function() { 
     return $('#approvalStatusSelect').val(); 
    }, 
    'scheduleableCriteria.locations': function() { 
     return $('#locationsSelect').val(); 
    } 
    } 
} 

#approvalStatusSelect作品完美,因爲有4個有效的選項,這是一個選擇。不過我在#locationSelect有問題。

如果我沒有選擇任何東西,我最終會發送"null"這與任何東西都不匹配。如果我選擇一個選項,我會得到一個有效的結果,因爲它被正確包裝。如果我嘗試發送兩個選擇,我最終會發送類似"Apartment,Building+3"的內容。

是否有除.val()以外的其他功能,允許我發送一個列表,而不是我現在得到的?

任何幫助讚賞,如果你需要澄清把它放在評論中,我會嘗試澄清更多。

+0

你可能想[看看地圖()](http://stackoverflow.com/a/5794756/1654265) –

+0

@AndreaLigios可惜我不太清楚如何能夠解決我的問題: - (真的,我可以用這種方式構建一個鍵值對,但是......它不太正確$ .map()我最終得到了如下所示:'0 [name]:「scheduleableCriteria.locations」''0 [值]:「公寓」''1 [name]:「scheduleableCriteria。位置「''1 [value]:」Gym「'但我需要的是'scheduableCriteria.locations:公寓''scheduleable Criteria.locations:Gym' – buzzsawddog

+0

Struts將多個相同的名稱轉換爲'List',每個實例都是一個條目使用地圖,我將不得不迭代我的'Java動作'中的項目,並做一些時髦的幕後的東西。 – buzzsawddog

回答

0

下面的最終使用下面的.serialize()和.seralizeArray()無法正常工作。

data: function() { 
    var data = {}; 
    data['scheduleableCriteria.approvalStatus'] = $("#approvalStatusSelect").val(); 
    var locations = $("#locationsSelect").val(); 
    if (locations) { 
    $.each(locations, function(i, location) { 
     data['scheduleableCriteria.locations[' + i + ']'] = location; 
    }); 
    } 
    return data; 
} 
0
'scheduleableCriteria.locations': function() { 
     return $('#locationsSelect').val(); 
    } 

這將只返回一個字符串 - 顯示多個值作爲逗號分隔列表。所以在行動中,他們實際上最終只是一個單一的字符串。

把所有的字段在表單標籤提交,然後使用序列如下

var submit_data = $('form').serialize();

那麼您的代碼將改爲顯示一些如:

events: { 
    url: 'ajaxLocationCalendar.action', 
    data: submit_data   
} 

這樣,多選將作爲數組而不是字符串提交。

解決方案2:

要創建自定義功能,來分析選擇,並返回所有選擇值的數組

Complete Solution Here

+0

可悲的是,這並沒有工作,因爲數據傳送的方式。成員的細節出了什麼問題,但似乎使用.serialize()最終做了一個k,v每個鍵只有一個字符的值。感謝您的幫助。 – buzzsawddog