我在查詢中返回一些數據(FOR JSON PATH,WITHOUT_ARRAY_WRAPPER)。我在我的服務器端(mvc控制器)調用這個查詢來獲取json數據,所以我可以在我的視圖中將它加載到select2中。如何將遠程數據加載到select2並按標題搜索
我使用此代碼在我的電影控制器
public async Task<ActionResult> DisplayMovies()
{
Movies [] movieList = await movieStorage.GetAllMovies();
if(Request.IsAjaxRequest())
{
return Json(movieList, JsonRequestBehavior.AllowGet);
}
else
{
return View();
}
}
當我調試代碼,調試器返回JSON這樣的:
[{"Title": "Shawshank Redemption", "Director": "Frank Darabont", "Genre": "Drama", "ReleaseYear": "1994", "Rating": "9,3"},
{"Title": "Shutter Island", "Director": "Martin Scorsese", "Genre": "Mystery", "ReleaseYear": "2010", "Rating": "8,1"},
{"Title": "Pulp Fiction", "Director": "Quentin Tarantino", "Genre": "Crime", "ReleaseYear": "1994", "Rating": "8,9"}]
這是我的.js
var myUrl = '@Url.Action("DisplayMovies", "Movies")';
$('.myMovies').select2( {
placeholder: 'Select movie...' ,
minimumInputLength: 1,
ajax: {
url: myUrl,
dataType: 'json',
data: function (term, page) {
return {
searchTerm: term
};
},
results: function (data, page) {
return {results: data};
}
}
});
and html
<select class="myMovies" multiple="multiple">
</select>
但是,當我運行它,沒有結果和沒有在控制檯中鉻或火狐錯誤。
如果我在我的電影控制器更改爲類似的東西一成不變的,它突然作品:
public async Task<ActionResult> DisplayMovies()
{
var list = new[]
{
new { id = 0, title = "Shawshank Redemption" },
new { id = 1, title = "Shutter Island" },
new { id = 2, title = "Pulp Fiction" },
}.ToList();
if (Request.IsAjaxRequest())
{
Object json = JsonConvert.SerializeObject(list);
return Json(json, JsonRequestBehavior.AllowGet);
}
else
{
return View();
}
}
爲什麼這項工作,而不是當我從數據庫中獲取數據?錯誤在哪裏?我從數據庫中得到的json不正確,還是javascript代碼 - select2用於顯示json?
請幫
你的json在你的情況下是不同的。你有沒有試過選擇一個看起來像是可以工作的對象的匿名對象? – Fran
有沒有例子?我真的不知道你的意思@Fran – aiden87