#php #javascript #mysql #html #ajax
#php #javascript #mysql #HTML #ajax
Вопрос:
Я использую это для извлечения выпадающих списков:
function showRecords(str,column,nextDiv) {
if (str== null) {
document.getElementById(nextDiv).innerHTML="----------------------------------------";
return;
}
if (window.XMLHttpRequest) {
// code for IE7 , Firefox, Chrome, Opera, Safari
var xmlhttp=new XMLHttpRequest();
} else {
// code for IE6, IE5
var xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function() {
if (xmlhttp.readyState==4 amp;amp; xmlhttp.status==200) {
document.getElementById(nextDiv).innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open("GET","getRecords.php?" column "=" str,true);
xmlhttp.send();
}
Страница загружается нормально, однако, когда вы смотрите на исходную информацию, там нет ничего от AJAX, поэтому я не могу манипулировать ни одним из значений выпадающих списков через getElementById
, это нормально?
Разъяснение
Сам фактический идентификатор находится на главной странице, но все параметры импортируются с другой страницы. Я не могу использовать этот код, в частности:
<?php echo "document.getElementById('province').value ="Abim";";?>
Поскольку эти страны не существуют на этой странице, они являются импортированными значениями, и не только это, но и единственное, что есть на странице — это это…
<option value = >--------------------</option>
<option value="Abim">Abim</option>
<option value="Adjumani">Adjumani</option>
<option value="Amolatar">Amolatar</option>
<option value="Amuria">Amuria</option>
... etc
Все это вставляется здесь
<select name =province class=dropdown id=province></select>
в силу идентификатора.
Решение
Передайте другую переменную через функцию AJAX: oldVal ($_REQUESTed Value)
...
xmlhttp.onreadystatechange = function() {
if (xmlhttp.readyState == 4 amp;amp; xmlhttp.status == 200) {
document.getElementById(nextDiv).innerHTML = xmlhttp.responseText;
---------> document.getElementById(nextDiv).value = oldVal;
}
}
Комментарии:
1. Оба они отображаются в инспекторе DOM, но не в исходном коде.
Ответ №1:
Вы не сможете сделать ничего полезного с province
элементом, пока он не будет заполнен вашим AJAX-вызовом. Вы должны переместить этот фрагмент JavaScript:
document.getElementById('country').value = "Uganda";
в ваш обратный вызов AJAX:
xmlhttp.onreadystatechange = function() {
if(xmlhttp.readyState == 4 amp;amp; xmlhttp.status == 200) {
document.getElementById(nextDiv).innerHTML = xmlhttp.responseText;
document.getElementById('country').value = "Uganda";
}
};
Или что-то в этом роде. В вашем комментарии к nnnnnn говорится о списке стран, но в вашем обновленном вопросе говорится о списке провинций, поэтому я не уверен, в каком из них ваша проблема; однако я почти уверен, что основная проблема заключается в том, что вы устанавливаете значение a <select>
до того, как вы заполнили его <select>
с помощью AJAX-вызова, и решение состоит в том, чтобы установить значение в обратном вызове AJAX после обновления DOM с помощью HTML из вашего AJAX-вызова.
Комментарии:
1. Я точно понимаю, что вы говорите, я возлюсь с этим прямо сейчас. Спасибо.
2. Проблема заключается в сочетании двух, есть регионы, страны и провинции, как только $ _POST[‘province’] установлен, тогда я заставляю его генерировать правильный выпадающий список для стран, однако он выбирает это значение, т. Е. Уганда, что сложно. То же самое для перехода от страны к региону.
3. Я только что передал другую переменную… Я опубликую окончательную функцию вверху.
4. Большое вам спасибо 🙂 Теперь мой интерфейс работает действительно плавно 🙂
Ответ №2:
Если вы используете View / Source, обычно он показывает вам исходный код страницы только во время ее первой загрузки, т. Е. он не будет включать элементы, созданные программно позже. Если вы подумаете об этом, это действительно хорошо, потому что это позволяет вам увидеть, как начинается страница. Тем не менее, вы все равно должны иметь возможность манипулировать элементами, созданными программно, включая элементы, созданные из возврата AJAX. С учетом сказанного, существуют более продвинутые инструменты отладки на основе браузера, чем просто View / Source.
Если вы хотите использовать getElementById()
убедитесь, что ваш серверный код возвращает атрибут id для рассматриваемых элементов. Если у вас возникли проблемы с запуском этого, нам могло бы помочь, если бы вы опубликовали часть своего серверного кода.
Комментарии:
1. Сам фактический идентификатор находится на главной странице, но все параметры импортируются с другой страницы. Я не могу использовать этот код, в частности: <?php echo «document.getElementById(‘country’).value =»Uganda «;»;?> поскольку Uganda не существует на этой странице, это импортированное значение.