好吧,我覺得我會在這裏瘋狂。我使用的是select2 jquery插件(版本4),並通過ajax檢索數據。所以你可以輸入一個名字,它會返回這個聯繫信息。但我也想要返回聯繫人所屬的組織。Select2 - 通過ajax回傳附加數據
這是我的選擇2初始化:
$('#contact_id').select2({
ajax: {
url: 'example.com/contacts/select',
dataType: 'json',
delay: 250,
data: function (params) {
return {
q: params.term,
page: params.page
};
},
processResults: function (data) {
return {
results: data
};
},
cache: true
},
minimumInputLength: 3,
maximumSelectionLength: 1
});
這裏是我返回的數據(laravel框架):
foreach($contacts as $con) {
$results[] = [
'id' => $con->contact_id,
'text' => $con->full_name,
'org' => [
'org_id' => $con->organization_id,
'org_name' => $con->org_name
]
];
}
return response()->json($results);
所以不是「組織」應該被附加到創建的選項或通過select2選擇元素?所以我可以做類似$('#contact_id').select2().find(':selected').data('data').org
或$('#contact_id').select2().data('data').org
或類似的東西?
理想化,這看起來像:
<select>
<option value="43" data-org="{org_id:377, org_name:'Galactic Empire'}">Darth Vader</option>
</select>
我發誓,我證實了這一點,上週的工作,但現在它完全忽略了組織屬性。我已經確認返回的json數據包含org_id和org_name。我一直沒能在網上挖什麼都漲,的documentation僅此片段:
ID和文本屬性,則需要在每個對象上,而這些都是選擇二使用的內部數據對象的屬性。傳入數據對象的任何附加參數都將包含在Select2公開的數據對象中。
那麼誰能幫助我呢?我已經浪費了幾個小時。
編輯:因爲我還沒有得到任何迴應,我目前的計劃是使用processResults
回調產卵隱藏輸入字段或JSON塊,我將在我的代碼日後參考。考慮到這種情況,我覺得這是一種拙劣的解決方案,但如果沒有別的辦法,那就是我會做的。我寧願這樣做,而不是做另一個Ajax電話來獲得組織。當我開始實施它時,我會發布我的解決方案。
嗨,我現在面臨同樣的問題。我需要使用數據屬性理想地傳遞其他數據(不僅是id和文本)。你解決了這個問題嗎? – slick
你有沒有得到一個工作解決方案呢? –
我添加了我的解決方案。 –