Что я хочу, очень просто: у меня есть сервер javascript и HTML-клиент, и я просто хочу получить строку с сервера, которую HTML-страница затем добавляет в одно из раскрывающихся меню. Существует три соответствующих блока кода:XMLHttpRequest no response
function stringLoader(){
var xhr = new XMLHttpRequest();
var url = "/pathname";
xhr.open("GET",url);
xhr.setRequestHeader("Content-Type", "text/xml");
xhr.onreadystatechange = function() {
if (xhr.readyState == 4) {
if (xhr.status == 200) {
var data = xhr.responseText;
}
}
};
xhr.send();
return data;
}
function loaderCaller(){
var element = document.getElementById("Menu");
//"Menu" is the html <select> box I want to add to
var option = document.createElement("option");
option.text = stringLoader();
element.add(option);
}
Эти два находятся в тегах сценария в клиенте. Соответствующий код в моем сервере заключается в следующем:
function handleRequest(req, res) {
//process the request
console.log("Request for: "+req.url);
var filename = ROOT + req.url;
var urlObj = url.parse(req.url, true);
var code = 200;
var data = "";
if(req.method === 'GET' && urlObj.pathname === ("/pathname")){
res.writeHead(code, {'content-type': 'text/html'});
res.send("test");
}
Я знаю loaderCaller() добавит опцию, если я изложу stringLoader возвращать строку буквальной вместо переменного, так что проблема не в этом. Я также знаю, что if {} на сервере выполняется, потому что я поставил несколько вызовов console.log() для его проверки.
Это должно добавить опцию меню выбора, которое просто говорит «тест», правильно? Я предполагаю, что это одна из тех проблем, где ответ ослепительно очевиден. Пожалуйста, помогите мне. Этот код был нефункциональным в течение многих часов, и я очень хочу умереть.