我想設置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」時。
這裏是一個工作版本的最終代碼:
$('#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>';
}
}
});
JSONP是對發出Ajax調用.../API/IngredientChoices是當地的url?那麼你只需要數據類型json我認爲 –
啊,我不確定JSON和JSONP的區別。有了JSON,我仍然在附加的截圖中看到錯誤。 – Yecats