Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 30.01.2013, 15:23
Профессор
Посмотреть профиль Найти все сообщения от imediasun1
 
Регистрация: 23.12.2012
Сообщений: 437

отправка данных в инпут через AJAX
Этот скрипт отправляет данные ajax запроса и записывает их в 2 элемента формы select с именами "maker" и "products" Помогите пожалуйста изменить скрипт так чтобы он записывал данные в селект "maker" (остается без изменения) и в инпут "products"

var request = null;
function createRequest() {
  try {
    request = new XMLHttpRequest();
  } catch (trymicrosoft) {
    try {
      request = new ActiveXObject("Msxml2.XMLHTTP");
    } catch (othermicrosoft) {
      try {
        request = new ActiveXObject("Microsoft.XMLHTTP");
      } catch (failed) {
        request = null;
      }
    }
  }
  if (request == null) alert("Ошибка при создании объекта XMLHttpRequest!");
}

function getList(ctg, mkr) {
  document.getElementById("product").innerHTML = '<option value="0">Выберите</option>';
  if ( mkr == "" )
    url = "../action/getList.php?category=" + ctg;
  else
    url = "../action/getList.php?category=" + ctg + "&maker=" + mkr;
  createRequest();
  request.open("GET", url, true);
  request.onreadystatechange = makeList;
  request.send(null);
}
 
function makeList() {
  // только при состоянии "complete"
  if (request.readyState == 4) {
    // для статуса "OK"
    if (request.status == 200) {
      // здесь идут построение списков заново
      responseXml = request.responseXML;
      xmlDoc = responseXml.documentElement;
      action = xmlDoc.getElementsByTagName("action")[0].firstChild.data;
      options = xmlDoc.getElementsByTagName("options")[0].firstChild.data;
      if ( action == "makeMakerList" )
        document.getElementById("maker").innerHTML = options;
      else
        document.getElementById("product").innerHTML = options;
    } else {
      alert("Не удалось получить данные от сервера:\n" + request.statusText);
    }
  }
}

var request = null;
function createRequest() {
  try {
    request = new XMLHttpRequest();
  } catch (trymicrosoft) {
    try {
      request = new ActiveXObject("Msxml2.XMLHTTP");
    } catch (othermicrosoft) {
      try {
        request = new ActiveXObject("Microsoft.XMLHTTP");
      } catch (failed) {
        request = null;
      }
    }
  }
  if (request == null) alert("Ошибка при создании объекта XMLHttpRequest!");
}

function getList(ctg, mkr) {
  var _select = document.getElementById("product");
  _select.innerHTML = ""; // Удаляем всех потомков
  var option = document.createElement("option");
  var optionText = document.createTextNode("Выберите");
  option.appendChild(optionText);
  option.setAttribute("value", "0");
  _select.appendChild(option);
  if ( mkr == "" )
    url = "../action/getList.php?category=" + ctg;
  else
    url = "../action/getList.php?category=" + ctg + "&maker=" + mkr;
  createRequest();
  request.open("GET", url, true);
  request.onreadystatechange = makeList;
  request.send(null);
}
 
function makeList() {
  // только при состоянии "complete"
  if (request.readyState == 4) {
    // для статуса "OK"
    if (request.status == 200) {
      // здесь идет построение списков заново
      var responseXml = request.responseXML;
      var xmlDoc = responseXml.documentElement;
      var action = xmlDoc.getElementsByTagName("action")[0].firstChild.data;
      if ( action == "makeMakerList" ) {
        _select = document.getElementById("maker");        
      } else {
       _select = document.getElementById("product");
      }
      _select.innerHTML = ""; // Удаляем всех потомков
      options = xmlDoc.getElementsByTagName("option");
      for (var i=0; i<options.length; i++) {
        // Извлекаем значение атрибута value и текст
        var value = options[i].getAttribute("value");
        var text = options[i].firstChild.data;
        // Формируем очередной элемент option
        var option = document.createElement("option");
        var optionText = document.createTextNode(text);
        option.appendChild(optionText);
        option.setAttribute("value", value);
        _select.appendChild(option);
      }
    } else {
      alert("Не удалось получить данные от сервера:\n" + request.statusText);
    }
  }
}
Ответить с цитированием
  #2 (permalink)  
Старый 30.01.2013, 16:20
Аватар для ОлегА
Профессор
Отправить личное сообщение для ОлегА Посмотреть профиль Найти все сообщения от ОлегА
 
Регистрация: 25.08.2011
Сообщений: 420

Вы опубликовали очень много кода.

Пожалуйста, локализуйте проблему!

Выделите фрагмент кода, по которому есть вопрос и опубликуйте его отдельно.

И, по возможности, уберите из кода мусор, чтобы нам легче было сориентироваться и помочь решить вашу проблему.

Спасибо.

P.S. код форматируют специальные теги [ js ] ... [/js], [ html ] ... [/html] и другие аналогичные, сам. http://javascript.ru/formatting
Ответить с цитированием
  #3 (permalink)  
Старый 30.01.2013, 18:06
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

А че код дублируется?
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Через ajax отправить много данных из таблицы на сервер Heger jQuery 3 29.08.2012 18:51
При отправке через ajax, в данных появляются мнемоники nikolayseo Общие вопросы Javascript 1 03.02.2012 00:48
отправка данных через $.post и обработка контроллером dsnj AJAX и COMET 8 29.11.2011 13:48
кеширование HTML переданого через ajax BorisBritva jQuery 6 02.04.2011 01:23
Просмотр передаваемых данных через AJAX Гость AJAX и COMET 3 04.08.2008 14:34