2016-11-10 43 views
0

我試圖使用XML從網站獲取城市列表,然後通過並將每個城市添加到數據列表中,以便在我輸入時會過濾城市在列表中。城市名單的Fixed - AJAX and 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顯示沒有任何東西被添加到數據列表中,所以我想知道我做錯了什麼。我也嘗試使用.responseText而不是.responeXML,但它沒有任何區別。誰能幫我?編輯] 已取得進展。 我改變了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