2015-02-06 2 views
1

Так что я пытаюсь переписать синхронный запрос xml в асинхронный запрос xml. Я очень новичок в этом, поэтому, пожалуйста, простите меня, если ошибка действительно глупа.asynchronous xml request не возвращает

В любом случае, это в настоящее время то, что у меня есть.

var getEmployeeData = function(section, question, column){ 
    var xhr = new XMLHttpRequest(); 
    xhr.open("GET", Data.contextPath + "/main/?action=get-employee-list&section=" +section+ "&question=" +question+ "&column=" +column, true) 
    xhr.onload = function (e) { 
     if (xhr.readyState === 4) { 
      if (xhr.status === 200) { 
       if (employeeDataDone) { 
        if (xhr.responseText==("\r\n")) { 
         employeeList = null; 
         employeeInverseList = null; 
        } else { 
         employeeList = JSON.parse(xhr.responseText)[0]; 
         employeeInverseList = JSON.parse(xhr.responseText)[1]; 
        } 
       } 
      } else { 
       console.error(xhr.statusText); 
      } 
      } 
    }.bind(this); 
    xhr.onerror = function (e) { 
     console.error(xhr.statusText); 
    }; 
    xhr.send(null); 
}.bind(this); 

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

Спасибо!

+1

Почему вы проверяете 4 и 200 внутри нагрузки? – epascarello

+0

@epascarello Я понятия не имею, извините, я супер новичок в этом. Можно ли их удалить? – Jake

+0

@epascarello Он использовал неправильное имя метода на объекте XHR. Использование правильного имени метода вызывается несколько раз в течение всего срока службы запроса в разных состояниях. – Mark

ответ

1

Вы должны слушать событие onreadystatechange или присоединить к объекту функцию с этим именем. Далее следует решить вопрос:

var getEmployeeData = function(section, question, column){ 
    var xhr = new XMLHttpRequest(); 
    xhr.open("GET", Data.contextPath + "/main/?action=get-employee-list&section=" +section+ "&question=" +question+ "&column=" +column, true) 
    xhr.onreadystatechange = function (e) { 
     if (xhr.readyState === 4) { 
      if (xhr.status === 200) { 
       if (employeeDataDone) { 
        if (xhr.responseText==("\r\n")) { 
         employeeList = null; 
         employeeInverseList = null; 
        } else { 
         employeeList = JSON.parse(xhr.responseText)[0]; 
         employeeInverseList = JSON.parse(xhr.responseText)[1]; 
        } 
       } 
      } else { 
       console.error(xhr.statusText); 
      } 
      } 
    }.bind(this); 
    xhr.onerror = function (e) { 
     console.error(xhr.statusText); 
    }; 
    xhr.send(null); 
}.bind(this); 

Edit: Для получения более подробной информации я бы рекомендовал смотреть на Википедию entry for XMLHttpRequest.

+1

Ohh woops, я полностью помню, что видел это где-то. Наверное, я забыл изменить свою нагрузку на onreadystatechange. Это здорово, спасибо, Марк! – Jake

+1

Я полностью обнаруживаю, что время от времени я почесываю голову над именами API. Что касается вашего другого ответа, который, похоже, потерялся в гигантском битбакете в небе, я бы вызвал ваши данные в сообщение привязки DOM в теле вашего метода onreadystatechange. Если вы нашли ответ полезным, пожалуйста, проголосуйте. Вы можете также проголосовать за ответ! Это вознаграждает людей, которые дают вам помощь. Кроме того, если ответ решает вашу проблему, вы можете пометить его как ответ, предоставляя себе и человеку ответы на дополнительные баллы. – Mark

+0

Да, я не знаю, что случилось с моим последним откликом. Как мне поменять DOM? Также был отмечен и дал вам галочку :). – Jake

Смежные вопросы