jQuery Autocomplete получить из txt массив или привязка к файлу
Посмотреть код в работе
по ссылке выше можете посмотреть все необходимое... у меня источник данных - текстовый файл 1.txt в нем текстовые данные представлены в таком виде: Один Два Три Четыре и т.д. подскажите, где нужно изменить, чтобы данные считывало из файла.... или как второй вариант - записать содержимое всего файла в массив (но там 7к записей, будет большая нагрузка на сервак) |
Цитата:
|
я не хочу лишний раз дергать бд просто
для этого я создал текстовый файлик |
вычитать файл в переменную можно так
var jqxhr = $.get( "1.txt", function()) .done(function(data) { //файл будет в переменной data }) .fail(function( jqxhr, textStatus, error ) { var err = textStatus + ', ' + error; console.log( "Request Failed: " + err); }); |
спасибо, сделал по аналогии, как было
что-то еще нужно поменять - так не работает по идее нужно внести в массив данные по одному, и каждый элемент начинающийся с новой строки как новый элемент массива у меня есть рабочий код, который берет данные прямо из текстового файла: $(document).ready(function() { $("#file").autocomplete("autocomplete.dat", { autoFill:false, cacheLength:2, delay:1, matchCase:false, matchContains:false, matchSubset:false, minChars:2, mustMatch:false, scroll:false, maxItemsToShow:30 }); но в новом коде такое вариант не канает, я не знаю где поменять (менял по аналогии и не работает) <script language="javascript"> var jqxhr = $.get( "1.txt", function()) .done(function(data) { }) jqxhr.sort(); function monkeyPatchAutocomplete() { var oldFn = $.ui.autocomplete.prototype._renderItem; $.ui.autocomplete.prototype._renderItem = function( ul, item) { var re = new RegExp("^" + this.term, "i") ; var t = item.label.replace(re,"<span style='font-weight:bold;color:red;'>" + this.term + "</span>"); return $( "<li></li>" ) .data( "item.autocomplete", item ) .append( "<a>" + t + "</a>" ) .appendTo( ul ); }; } $(document).ready(function() { monkeyPatchAutocomplete(); $("#input1").autocomplete({ source: function(req, responseFn) { addMessage("Поск: '" + req.term); var re = $.ui.autocomplete.escapeRegex(req.term); var matcher = new RegExp( "^" + re, "i" ); var a = $.grep(jqxhr, function(item,index){ //addMessage(" sniffing: '" + item + "'<br/>"); return matcher.test(item); }); addMessage("Количество: " + a.length + " элемента(ов)"); responseFn( a ); }, select: function(value, data){ if (typeof data == "undefined") { addMessage('Количество: ' + value); }else { addMessage('Вы выбрали: ' + data.item.value); } } }); }); function addMessage(msg){ $('#msgs').empty(); $('#msgs').append(msg); } </script> |
дык тогда get не нужен, пишите
забирайте через .autocomplete("1.txt", { |
в примере кода выше добавляю в 20-ю строку
$("#input1").autocomplete("1.txt",{ но не работает |
все нарыл как переводить в массив
var cardRules = new Array(); $.get('autocomplete.dat', function(data){ cardRules = data.split('\n'); console.log(cardRules); }); теперь все работает вроде |
но, мне интересно как из файла вытянуть в моем случае
м.б. кто подскажет |
Часовой пояс GMT +3, время: 10:54. |