2016-11-10 3 views
0

Я пытаюсь использовать XML, чтобы получить список городов с веб-сайта, затем пройдитесь и добавьте каждый из городов в информационный ресурс, чтобы, когда я вставляю вход, он будет фильтровать города в списке.Исправлено - AJAX и datalists

пример списка городов:

Aleppo 
Alexandria 
Alger 
Almaty 
Ankara 
Anshan 
Baghdad 
Baku 
Bandung 
Bangalore 
Bangkok 
Barcelona 

* [Каждое название города на новой линии]

текущий HTML:

<div id="namearea"> 
     <h2>City Name:</h2> 

     <div> 
      <input id="citiesinput" list="cities"> 
      <datalist id="cities"></datalist> 

      <button id="search"> 
       Search 
      </button> 

      <span class="loading" id="loadingnames"> 
       Loading... 
      </span> 
     </div> 
    </div> 

текущий код JS:

window.onload = function() { 
    var request = new XMLHttpRequest(); 
    request.onload = processCities; 
    request.open("GET", "url", true); 
    request.send(); 
}; 

Проверка страницы с остроумием h Firebug показывает, что в datalist ничего не добавляется, поэтому мне интересно, что я делаю неправильно. Я также пробовал использовать .responseText, а не .responeXML, но это не имело никакого значения. Может кто-нибудь мне помочь?

[EDIT] Прогресс был сделан. Я изменил processCities() функция:

function processCities() { 
    var response = this.responseText; 
    var city = response.split("\n"); 
    var options = ""; 

    for(var i = 0; i < response.length; i++) { 
     options += "<option value='"+city[i]+"'>\n"; 
    } 
    document.getElementById("cities").innerHTML = options; 
} 

Этот код, кажется, работает.

Спасибо за помощь.

+2

'response' будет XML DOM. Вам нужно будет привести пример того, как выглядит ответ для нас. То, что вы показали, это не XML. –

ответ

0

Ниже приведен пример запроса. Если вы действительно получаете XML, вам придется его разобрать. Лучше, если бы вы смогли получить json.

var request = new XMLHttpRequest(); 
 
request.open('GET', '/my/url', true); 
 

 
request.onload = function() { 
 
    if (request.status >= 200 && request.status < 400) { 
 
    // Success! 
 
    var data = JSON.parse(request.responseText); 
 
    } else { 
 
    // We reached our target server, but it returned an error 
 

 
    } 
 
}; 
 

 
request.onerror = function() { 
 
    // There was a connection error of some sort 
 
}; 
 

 
request.send();

+0

Если вы установите 'response' в' responseText', то через него будет возвращен каждый символ в ответе ... –

+0

Хорошо, поймайте, я просто удалил эту часть. Я думаю, что получение хорошей функции запроса будет хорошим началом. –

+0

Мне удалось понять это, немного потрудившись, но это поможет с последующей частью задания и помогло мне разобраться в этом, так что спасибо за вашу помощь – Sherpa

 Смежные вопросы

  • Нет связанных вопросов^_^