2016-10-30 10 views
0

私はSelect2 4.0.3を使用しています。私のサーバーから返されたjsonをドロップダウンのオプションとして表示するようにしようとしましたが、ドロップダウンまたは検索を開くと結果が表示されません現場で。私は一致するテキストを入力し、サーバから期待されるように私は戻って応答を取得していますselect2結果がサーバーに表示されない

<body> 
    <select class="select2-student form-control"> 
    </select> 
</body> 

<script> 
    $(document).ready(function() { 
     $(".select2-student").select2({ 
      ajax: { 
       url: "/MyUrl", 
       data: function (params) { 
        return { 
         text: params.term 
        }; 
       }, 
       processResults: function (data, params) { 
        return { 
         results: data 
        }; 
       } 
      } 
     }); 
    }); 
</script> 

[{"Text":"My Student","Id":3}] 

そしてI入力A私はドロップで「結果が見つかりません」ダウン取得しています文字列がサーバー側の条件と一致しない(つまり、 "text"フィールド内のものと一致しない)が、結果が返された場合、ドロップダウンも表示されず、何も表示されません。私のブラウザでもエラーが発生します。

私はこのコードで一日中さまざまなバリエーションを試してきましたが、まだ何かを手に入れていません。助言?

答えて

0

同じ問題を抱えている人のための更新:私はポストした直後に何が起こったのか把握しました。サーバーから戻ってきたJSONはラクダのケースではなかったので、Select2は正しく読み取れませんでした。正しい形式は次のとおりです。

[{"text":"My Student","id":3}] 

愚かなことは振り返りますが、ASP.NETではこの方法ではデフォルトではフォーマットされていないようです。私はthis questionからJsonCamelCaseResultクラスを使い始めました。これは完全に動作しています。

0

私はこれはかなり古い質問ですが、それを行うためのよりよい方法はこのような何かをすることです知っている:

  processResults: function(data) { 
       return { 
        results: jQuery.map(data, function(item) { 
         return { 
          id: item.key, 
          text: item.value 
         } 
        }) 
       }; 
      }, 

あなただけ気にせず、マッピングされたオブジェクトの標準コレクションを返すことができますこの方法あらゆるケーシングについて。

関連する問題