2016-03-30 2 views
0

В настоящее время я не могу получить данные из моего XML-файла. Ниже приведен код;jQuery autocomplete не будет обрабатывать данные XML

$(document).ready(function() { 
    setTimeout(function() { 
     $('#_Q0').autocomplete({ 
      source: function(request, response) { 
       $.ajax({ 
        url: "brands.xml", 
        dataType: "xml", 
        type: "GET", 
        success: function(xml) { 
         var results = []; 
         $(xml).find("brand").each(function() { 
          if (results.indexOf(request.term.toUpperCase()) >= 0) { 
           results.push(results); 
          } 
         }); 
         response(results); 
        } 
       }); 
      }, 
      autoFocus: true, 
      minLength: 3, 
      response: function(event, ui) { 
       if (!ui.content.length) { 
        var noResult = { 
         value: "", 
         label: "No results found" 
        }; 
        ui.content.push(noResult); 
       } 
      } 
     }); 
     var render = $('#_Q0').autocomplete('instance')._renderMenu; 
     $('#_Q0').autocomplete('instance')._renderMenu = function(ul, items) { 
      items.push({ 
       label: 'AUTRE MARQUE', 
       value: 'AUTRE MARQUE', 
       last: true 
      }); 
      render.call(this, ul, items); 
     }; 
    }, 100); 
}); 

и здесь находится плунжер;

https://plnkr.co/edit/QFOYcJc7iQ8UQc0e5SKH?p=preview

я ранее работал с источником JSON, но теперь должны перейти на XML.

Заранее спасибо

+0

Вы пробовали с помощью функции библиотеки? http://api.jquery.com/jQuery.parseXML/ – blgt

ответ

0

проблема Th в обработке XML-

$(document).ready(function() { 
    setTimeout(function() { 
    $('#_Q0').autocomplete({ 
     source: function(request, response) { 
     $.ajax({ 
      url: "brands.xml", 
      dataType: "xml", 
      type: "GET", 
      success: function(xml) { 
      var term = request.term.toLowerCase(); 
      var results = $(xml).find("brand").filter(function() { 
       return $(this).attr('label').toLowerCase().indexOf(term) > -1; 
      }).map(function() { 
       return { 
       label: $(this).attr('label') 
       } 
      }).get(); 
      response(results, xml); 
      } 
     }); 
     }, 
     autoFocus: true, 
     minLength: 3, 
     response: function(event, ui) { 
     if (!ui.content.length) { 
      var noResult = { 
      value: "", 
      label: "No results found" 
      }; 
      ui.content.push(noResult); 
     } 
     } 
    }); 
    var render = $('#_Q0').autocomplete('instance')._renderMenu; 
    $('#_Q0').autocomplete('instance')._renderMenu = function(ul, items) { 
     items.push({ 
     label: 'AUTRE MARQUE', 
     value: 'AUTRE MARQUE', 
     last: true 
     }); 
     render.call(this, ul, items); 
    }; 
    }, 100); 
}); 

Демо: Plunker

+0

Отлично! Большое спасибо :) – alexc