2013-01-25 79 views
1

我想設置Select2使用Ajax,我寧願卡住。我在IE中進行了調試,並確認我的AJAX正在返回結果,因此看起來不是問題。輸入框加載,但是當我爲「牛奶」鍵入「mi」時,它只是說「搜索...」,並且從來沒有發現任何東西!AJAX的結果問題 - 數據。結果是未定義的

這裏是我的Jquery:

 $(document).ready(function() { 
      $('#e1').select2({ 
       placeholder: "Select an ingredient...", 
       minimumInputLength: 2, 
       ajax: { 
        url: "../api/IngredientChoices", 
        dataType: "jsonp", 
        quietMillis: 500, 
        data: function (term, page) { 
         return { 
          q: term, 
          page_limit: 10, 
          page: page 

         }; 
        }, 
        results: function (data, page) { 
         var more = (page * 10) < data.total; 
         return { 
          results: data.MainName, more:more 
         } 

        } 
       } 
      }); 
     }); 

JSON:

[{"SubItemID":1,"MainItemID":1,"SubName":"2%","MainName":"Milk"},{"SubItemID":2,"MainItemID":1,"SubName":"Skim/Fat Free","MainName":"Milk"},{"SubItemID":3,"MainItemID":2,"SubName":"Chedder","MainName":"Cheese"}] 

HTML:

<td><input type="hidden" id="e1" /></td> 

如果我改變了數據類型爲剛剛JSON我得到一個不同類型的錯誤當我在框中輸入「mi」時。

enter image description here

這裏是一個工作版本的最終代碼:

  $('#e1').select2({ 
       placeholder: "Select an ingredient...", 
       minimumInputLength: 2, 
       ajax: { 
        url: "../api/IngredientChoices", 
        dataType: "json", 
        quietMillis: 500, 
        data: function (term, page) { 
         return { 
          q: term, 
          page_limit: 10, 
          page: page 

         }; 
        }, 
        results: function (data, page) { 
         var more = (page * 10) < data.length; 
         console.log(more); 
         console.log(data); 
         return { results: data, more: more }; 

        }, 
        formatResult: function (post) { 
         markup = '<strong>' + post.text + '</strong>'; 
        } 
       } 
      }); 
+0

JSONP是對發出Ajax調用.../API/IngredientChoices是當地的url?那麼你只需要數據類型json我認爲 –

+0

啊,我不確定JSON和JSONP的區別。有了JSON,我仍然在附加的截圖中看到錯誤。 – Yecats

回答

4

您遇到的似乎是因爲你所得到的結果的格式的錯誤。 Select2預期的結果是具有id:和text:屬性的對象的集合。

[{ID:1,文本:字符串'},{ID:2,文本:其他字符串'}]

+0

你是對的,我需要改變我的JSON輸出有id和文本,它的工作。另外,我不得不將結果改爲數據。我已經爲他人發佈了我的更正後的代碼。 – Yecats

+0

json字段名稱如何更改爲文本? 我遇到類似的問題,除了我無法將我的一個字段名稱('email')轉換爲'text' – user3115056