2016-12-27 12 views
0

ASP.NET MVCでjqueryを使用してドロップダウンリストに項目を動的に設定しようとしています。jqueryを使用して選択ドロップダウンに項目を追加することができません

これが私の見解コードです:

<select id="StartLocation" class="custom-select", onchange = "highlightMarkerById(this.value,0)"> 
    <option value="">-Start Location-</option> 
</select> 

これは私がデータを取得するために呼び出す関数です。

を:MVコントローラーで

function GetLocations() { 
    $.ajax({ 
     type: "POST", 
     url: "/MV/GetLocations", 
     dataType: "json", 
     success: function (data) { 
      for (var j = 0; j < data.length ; j++) { 
       $('#StartLocation').append($('<option>', { 
        value: data[j].Value, 
        text: data[j].Text 
       })); 
      } 
     }, 
     error: function() { 
      return "error"; 
     } 
    }); 
} 

を次のように、私はGetLocationsアクションメソッドを持っています

[HttpPost] 
public JsonResult GetLocations() 
{ 
    List<vlocation> locationslist = DBManager.Instance.GetLocations(); 
    List<SelectListItem> locations = new List<SelectListItem>(); 
    foreach(var loc in locationslist) 
    { 
     locations.Add(new SelectListItem { Value = loc.displayName, Text = loc.displayName }); 
    } 

    return Json(locations); 
} 

クロムでデバッグしたところ、successに達しましたd forループも繰り返し実行されています。 しかし、私は項目がドロップダウンに追加されていない理由を把握することはできません。同じコードを使用して、success以外の項目をドロップダウンに追加すると、項目が追加されます。どんな助けもありがとう。

+0

を。オプションを追加した後。更新}})); – ScanQR

+0

応答形式は何ですか?地図、jsonまたは何ですか? – ScanQR

+0

あなたはデータを取得しています...なぜ 'POST'ですか?なぜなら、@ScanQRがあなたの問題だと言ったように、おそらく'; 'でしょう。 –

答えて

0

次のようにJSONを反復処理しようとすることができ、

var optionAppend = ''; 
$.each(data,function(i,el){ 
    optionAppend += '<option value="'+el.Value+'">'+el.Text+'</option>'; 
}); 

$('#StartLocation').append(optionAppend); 
+0

まだ同じです。すべては 'success'ブロックの外で動作します。 – ViVi

+0

@ViVi成功の外で動作する完全なコードを表示できますか? – ScanQR

0

あなたはこれを試すことができます。

for (var j = 0; j < data.length ; j++) { 
       $('#StartLocation').append("<option value="+data[j].Value+" >"+data[j].Text+"</option>"); 
      } 
+0

Tried .. Not working .. – ViVi

0

を試してください: -

for (var j = 0; j < data.length ; j++) { 
    $("#StartLocation").append($('<option></option>').val(data[j].Value).html(data[j].Text)); 
} 
+0

"data.length"の結果と "data"の構造を投稿できますか? –

0

私たちが持っていないのでページの完全なコードは、それが動作していない理由を言うのは難しいです。しかし、あなたのケースの1つが次のものかどうかを確認してください。

  1. ドキュメントには、同じID "StartLocation"を持つ複数のHTML要素があります。

  2. 選択は、実際に新しいオプションの要素を持っていますが、あなたは(SELECT2または選択が美しく見えるようにする他のプラグインと同様に)選択ボックスをカスタマイズしているので、新しく選択は、まだ選択したソースによっては影響されないスキン。 Selectが変更されたことをプラグインに知らせるには、いくつかのイベントをトリガーする必要があります。

0

あなたはこれを試すことができます:あなたが不足している

[HttpPost] 
public JsonResult GetLocations() 
{ 
    List<vlocation> locationslist = DBManager.Instance.GetLocations(); 
    List<SelectListItem> locations = new List<SelectListItem>(); 
    foreach(var loc in locationslist) 
    { 
     locations.Add(new SelectListItem { Value = loc.displayName, Text = loc.displayName }); 
    } 

    return Json(new SelectList(locations, nameof(SelectListItem.Value), nameof(SelectListItem.Text));); 
} 
関連する問題