Какова ваша точка отказа?Ваш Javascript отправляет запрос Ajax и получает ответ?
Получает ли lines
данные в этой строке вашего кода?
var lines = file.responseText.split("\n");
Если вы получаете это далеко, выполните итерацию по lines
и добавьте следующие параметры:
var select = document.getElementById('id');
select.options.add(new Option(lines[i]));
В вашем методе writeDropDownList
я внес несколько изменений: добавил метод, который будет вызываться после завершения вашего вызова Ajax.В этом методе вы должны проверить строку ответа и добавить опции в поле выбора
base.writeDropDownList = function(file, method, path) {
var file = upload.requestAjax();
file.open(method, path, true);
file.onreadystatechange = requestComplete;
file.send(null);
}
requestComplete()
{
if (file.readyState == 4)
{
if(file.readyState == 200)
{
var lines = file.responseText.split("\n");
//foreach loop to populate select
}
}
}
. В своем коде вы проверяете и используете files.responseText
еще до того, как отправили запрос Ajax на * 1016.*
РЕДАКТИРОВАТЬ:
Еще несколько комментариев относительно вашего кода:
В функции createCountriesList
вы создаете file
и назначаете емузначение по телефону requestAjax
.Затем вы передаете его в функцию writeDropDownList
, где вы снова присваиваете ему значение, вызывая requestAjax
.Вы видите, что это избыточно?Нет необходимости создавать file
в createCountriesList
и передавать его в качестве аргумента.Создайте его всего один раз в writeDropDownList
.
в writeDropDownList
, который вы называете upload.requestAjax()
.Что такое
upload
.Я не вижу, чтобы вы инициализировали upload
в любом месте.Вы хотите вызвать base.requestAjax()
?
, у вас есть функция base.OnReadyStateChange
, но вы ни разу не говорите своему AJAX-запросу вызвать эту функцию при изменении состояния.Смотрите код, который я разместил выше.Функция, которую я добавил, называется
requestComplete
, делает это, и я сообщаю AJAX-запросу вызвать ее, используя file.onreadystatechange = requestComplete;
Вы установили method
в GET
, но покавы не передаете значения GET в своем URL
в file.open(method, path, true);
, путь должен быть URL-адресом скрипта, который вызовет AJAX-запрос.Вы установили path
на ../includes/_notes/countries.txt
.AJAX-запрос не может вызвать файл .txt
, так как он не выполняется.
Я только что посмотрел на исходный код вашего кода, и он разбит.Пожалуйста, не используйте его.
Что такое countries.txt
?Вы пытаетесь заполнить раскрывающийся список со списком всех стран или некоторых стран в зависимости от ввода пользователя?
Если первое, нет необходимости в Javascript / AJAX.Вам нужно добавить код PHP в html, чтобы заполнить поле выбора.
Если последнее, ваш запрос AJAX должен отправлять пользовательский ввод как переменную GET.