2017-02-17 97 views
-1

我正在使用Laravel 5.2和Select2.js的Ajax調用填充城市列表(在從下拉列表中選擇一個縣後)。在Laravel 5中爲Select2.js格式化JSON響應

我想,使其符合選擇二指標分析顯示一個下拉列表上格式化從AJAX調用JSON響應(idtext

這裏是我的控制器:

public function postCounty(Request $request) 
{ 
    if($request->ajax()) 
    { 
     $county = County::findOrFail($request->input('county_id')); 
     $cities = $county->cities()->orderBy('title', 'ASC')->get(); 
     return response()->json($cities); 
    } 
} 

它的工作原理罰款並返回一個城市列表:

[ 
    {"id":1,"title":"City 1","slug":"city-1"}, 
    {"id":2,"title":"City 2","slug":"city-2"}, 
    {"id":3,"title":"City 3","slug":"city-3"} 
] 

我需要只檢索列idtitle,所以我用->pluck('title', 'id')

它返回:

{"1":"City 1","2":"City 2","3":"City 3"} 

要我選擇列表選項上正確顯示的結果,利用選擇二,我需要的結果返回是這樣的:

[ 
    {"id":"1","text":"City 1"}, 
    {"id":"2","text":"City 2"}, 
    {"id":"3","text":"City 3"} 
] 

我知道我可以使用JavaScript和Select2 processResults格式化->get()數組的結果,但我想使用控制器來完成它,因此它直接格式化JSON響應。

這裏是我JS的簡化版本:

$("#countyFilter").select2().on("select2:selecting", function(e) { 
    var county_id = $(this).val(); 
    $.ajax({ 
     type:'GET', 
     url: 'mysite.com/api/county', 
     data: {county_id:county_id}, 
     success: function(data){ 
      $("#populateCities").select2({ 
       data:data 
      }); 
     } 
    }); 
}); 

該腳本作品幾乎罰款,只有data需要進行格式化。

我的問題:

如何使返回的[{"id":1,"text":"City 1"}]代替[{"id":1,"title":"City 1","slug":"city-1"}]

+0

BTW'formatting'意味着什麼,從什麼不同您認爲。 –

+0

@MarcinOrlowski這是否意味着像「格式化硬盤」中的「刪除」?也許我應該使用「輸出」。我的英語不在點:) – PhilMarc

+0

http://www.dictionary.com/browse/formatting –

回答

1

使用的格式在控制器中的JSON響應select('id','title')

$county = County::findOrFail($request->input('county_id')); 
    $cities = $county->cities()->select('id','title')->orderBy('title', 'ASC')->get(); 
    return response()->json($cities); 
+0

完美的作品,謝謝。現在有沒有辦法將'title'改爲'text'? (這也是我的問題) – PhilMarc

+1

將'select('id','title')'改爲'select('id','title as text')' – C2486

+0

對不起,謝謝你的幫忙! – PhilMarc