Изменение выпадающего значения на основе ответа AJAX - PullRequest
0 голосов
/ 01 февраля 2011

Я не очень хорошо разбираюсь в AJAX, но, судя по всему, это должно работать.Предполагается, что пользователь выбирает имя из раскрывающегося списка, а другой раскрывающийся список (заполняемый из базы данных mysql с помощью PHP) автоматически выбирает связанный объект.Допустим, у вас было:

Имя: Сьюзи / Майкл / Карен

Любимый фрукт: яблоко / апельсин / манго / гуава

, выбрав Сьюзи, он автоматически выберет "Апельсин""поскольку это ее любимый фрукт в базе данных.

У меня есть этот код для Ajax, чтобы изменить выпадающий список на связанный" фрукт ".

 <script type="text/javascript">
function getAff(str)
{
if (str=="NULL" || str=="")
  {
  document.getElementById("fruit").value="";
  return;
  }
if (window.XMLHttpRequest)
  {// code for IE7+, Firefox, Chrome, Opera, Safari
  xmlhttp=new XMLHttpRequest();
  }
else
  {// code for IE6, IE5
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
xmlhttp.onreadystatechange=function()
  {
  if (xmlhttp.readyState==4 && xmlhttp.status==200)
    {
    alert(xmlhttp.responseText);

 var indexVal = document.getElementById("fruit").length;
  for(x=0; x<indexVal;x++) {
  if (document.getElementById("fruit").options[x].value == xmlhttp.responseText) {
   document.getElementById("fruit").selectedIndex = x;
   //alert(xmlhttp.responseText);
   }
  }
    }
  }
xmlhttp.open("GET","getaff.php?q="+str,true);
xmlhttp.send();
}
</script>

Я сделалпо предупреждению, что он выбирает правильные значения, хотя я прокомментировал это здесь.

Единственное затруднение в том, что выпадающий список НЕ меняется.Я не знаю, потому что это сгенерировано через php?Так не должно быть.Значение каждого выпадающего списка - это название фрукта, который извлекается из базы данных.Я также предупредил себя о величине индекса, чтобы узнать, читает ли он выпадающий список, и получаю правильное число.Но без изменения выпадающего списка.Какие-нибудь мысли?Спасибо!

Ответы [ 3 ]

2 голосов
/ 01 февраля 2011

Я не очень хорошо разбираюсь в AJAX, но, судя по всему, это должно работать

Если вы не знакомы с javascript, я не думаю, что вам следует писатьпростой javascript (сложно).Используйте фреймворк, такой как, например, jquery , который очень популярен и делает эти мирские задачи такими же легкими, как пирог.

Что он должен сделать, так это выбрать пользователя из выпадающего списка,и другой выпадающий список (заполняемый из базы данных mysql с помощью PHP) автоматически выбирает связанный объект.

Вы должны посмотреть следующие разделы:

  • Как работает Jquery: для начала.
  • s elect () : привязать обработчик события к событию JavaScript "select" или вызвать это событие для элемента.
  • .load :: загрузить данные с сервера и поместить возвращенный HTML-код в соответствующий элемент.

  • Jquery.get / jQuery.getJSON () : загрузка данных с сервера с помощью HTTP-запроса GET / загрузка кодированных в JSON данных с сервера с помощью HTTP-запроса GET.

  • Jquery.post : загрузка данных с сервера с помощью HTTP-запроса POST.

Когда вы читаете / просматриваете эти разделы, вы сможете написать это без каких-либо усилий (плюс намного больше благодаря невероятному Джону Резигу).

0 голосов
/ 01 февраля 2011

Попробуйте установить выбранное значение в теге

вместо
0 голосов
/ 01 февраля 2011

Несколько вещей, чтобы попробовать:

  • Сравниваете ли вы значение или innerHTML?

  • Вы абсолютно уверенызначение (или innerHTML) соответствует вашему ответу?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...