2016-10-30 21 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}] 

而且我在下拉菜單中會出現「沒有找到結果」下來的時候我輸入字符串與服務器端標準不匹配(即與「文本」字段中的內容不匹配),但是當返回結果時,甚至沒有出現任何內容的下拉菜單 - 而且我沒有收到任何錯誤或者在我的瀏覽器中。

我已經嘗試了許多此代碼的變化,並且還沒有得到任何工作。建議嗎?

回答

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 
         } 
        }) 
       }; 
      }, 

這樣,你可以只返回映射對象的標準集合,而不用擔心關於任何套管。