2013-02-26 2 views
0

У меня есть успешный запрос и результаты AJAX. Результатом является простой текст, который я хочу поместить в строку таблицы внутри DOM. Ниже приведен код:Результаты AJAX не соответствуют DOM

xhr.onreadystatechange = function(event) { 
    if (xhr.readyState === 4 && xhr.status === 200) { 
     var results = xhr.responseText; 
     var col = document.getElementById("tr_concept_0_1_32").getElementsByClassName("col_1")[0]; 
     col.innerHTML = results; 
    } 
    else { 
     console.log(event); 
     alert("something went wrong!: " + event); 
    } 
    }; 

Когда я return col.innerHTML = results; я могу увидеть DOM модифицируется, но затем быстро возвращается к своему предыдущему значению.

Я новичок в AJAX, поэтому я не совсем уверен, почему «новое значение» не придерживается DOM. Любые предложения?

MORE КОД:
ОБНОВЛЕНО кнопка

form.form-search(id='searchForm') 
     fieldset 
     .input-append 
      input.input-xxlarge.search-query#search(type='text', placeholder='Search', name='q') 
      button.btn.submit(onclick='getParams(); return false;') Search 

выше код, который делает работу. Пользователь нажимает на форму button. Это может быть проблема? Я не справляюсь с чем-то правильным с этой целью?

UPDATED button Этот код отлично работает в Chrome, но не работает в Firefox.
В Firefox сообщение возвращает success, но onreadystatechange не запускается. Любые предложения?

+0

Не используйте 'return' в методе' onreadystatechange'. Есть ли у вас причина? – Ian

+0

нет ... только JS привычка я полагаю. Просто удалил его. Тот же вопрос. – user1460015

+1

Какой еще код работает на вашей странице? Ничто в опубликованном фрагменте не вернет его. – Bergi

ответ

1

Я думаю, что кнопка отправляет AJAX, и, представляя форму ... поэтому «перезагружая» страницу - так что вы видите значение «reset».

Если ваша кнопка только собирается отправить AJAX, измените ее атрибут type на «кнопку», или используйте onclick='getParams();return false;' для своего onclick обработчика.

Есть и другие способы сделать то же самое, но по моему предложению использование return false; предотвращает поведение кнопки отправки - по умолчанию. Но так как это после getParams();, getParams все еще называется и делает то, что вам нужно - AJAX.

Если вы изменили атрибут type на «кнопку», у него даже не было бы поведения отправки, поэтому не было бы этой проблемы.

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