|
|
|
AJAX: таблица не обновляется
|
|||
|---|---|---|---|
|
#18+
Начинаю осваивать AJAX. На странице есть таблица книг. По нажатию на кнопку с сервера приходит список книг, которые должны быть добавлены в таблицу. Я отлаживал скрипты с помощюью Firefor Firebug и все работает. Но работает ТОЛЬКО в режиме отладки скрипта. В обычном режиме Fireforx не обновляет таблицу, так же как и Opera и IE. Код скрипта: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. Может я конечно сильно туплю, но не могу понять, почему таблица не обновляется. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.07.2008, 16:46 |
|
||
|
AJAX: таблица не обновляется
|
|||
|---|---|---|---|
|
#18+
Из подохрительных моментов кода - хранение req в глобальной переменной. Вместо красивой конструкции item.attributes.getNamedItem("id").textContent; дучше использовать из DOM-1 item.getAttribute(name) This method returns a DOMString. The name parameter is of type DOMString. Где вызывается код? Сколько раз вызывается? Как задана в коде таблица? Если до загрузки документа вызывается функция - таблица может быть недоступна еще. Море вопросов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.07.2008, 20:41 |
|
||
|
AJAX: таблица не обновляется
|
|||
|---|---|---|---|
|
#18+
Кривизна ясен перец. Как сказал apapacy , подохрительный момент заключается в строчке Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.07.2008, 22:01 |
|
||
|
AJAX: таблица не обновляется
|
|||
|---|---|---|---|
|
#18+
Чисто для интереса. readyState=0 после создания объекта XMLHttpRequest, но до вызова метода open(). readyState=1 после вызова метода open(), но до вызова метода send(). readyState=2 после вызова метода send(). readyState=3 после того, как браузер соединится с сервером, но до завершения сервером ответа. readyState=4 после завершения запроса и полного получения всех данных ответа с сервера. А в коде выше получается что он вообще должен проскочить вот этот момент при первом вызове Код: plaintext 1. 2. 3. 4. Теоретически где-то должен быть сет таймаут чтобы она всетаки отработалась еще раз. Я могу ошибаться и поэтому интересуюсь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.07.2008, 22:35 |
|
||
|
AJAX: таблица не обновляется
|
|||
|---|---|---|---|
|
#18+
shiftee Я могу ошибаться и поэтому интересуюсь. Код: plaintext 1. 2. 3. 4. 5. 6. Каждый раз при изменении ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2008, 05:36 |
|
||
|
AJAX: таблица не обновляется
|
|||
|---|---|---|---|
|
#18+
apapacyИз подохрительных моментов кода - хранение req в глобальной переменной. Вместо красивой конструкции item.attributes.getNamedItem("id").textContent; дучше использовать из DOM-1 item.getAttribute(name) This method returns a DOMString. The name parameter is of type DOMString. Где вызывается код? Сколько раз вызывается? Как задана в коде таблица? Если до загрузки документа вызывается функция - таблица может быть недоступна еще. Море вопросов. Код вызывается по нажатию на кнопку Refresh: Код: plaintext 1. 2. Таблица на странице JSP задана слудующим образом: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. ShSergeКривизна ясен перец. Как сказал apapacy , подохрительный момент заключается в строчке Код: plaintext Я использую JBOSS. Но суть не в этом. Я отлаживал на стороне сервера, там все нормально, отправляет валидную XML. На стороне клиента отлаживал firebug-ом, все данные из XML извлекает и записывает куда нужно. Проблема в том, что без режима отладки ничего не происходит. shifteeЧисто для интереса. readyState=0 после создания объекта XMLHttpRequest, но до вызова метода open(). readyState=1 после вызова метода open(), но до вызова метода send(). readyState=2 после вызова метода send(). readyState=3 после того, как браузер соединится с сервером, но до завершения сервером ответа. readyState=4 после завершения запроса и полного получения всех данных ответа с сервера. А в коде выше получается что он вообще должен проскочить вот этот момент при первом вызове Код: plaintext 1. 2. 3. 4. Теоретически где-то должен быть сет таймаут чтобы она всетаки отработалась еще раз. Я могу ошибаться и поэтому интересуюсь. Тут я что-то не понимаю. Мне же нужно обрабатывать только то состояние, когда ответ получен и его можно парсить. Зачем мне остальные? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2008, 09:15 |
|
||
|
AJAX: таблица не обновляется
|
|||
|---|---|---|---|
|
#18+
Можно пойти другим путём. Послать куда подальше XmlHttpRequest и XML. Преобразовать XML в JSON (таких преобразователей очень много), превратить JSON в JSONP и в калбек функции updateBooks проаппендчилдить чего куда надо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2008, 10:10 |
|
||
|
AJAX: таблица не обновляется
|
|||
|---|---|---|---|
|
#18+
Спасибо за совет. Но моя цель заключается в том, чтобы сделать все "классическим" путем, без применения дополнительных средств. Я просто хочу разобраться как AJAX работает сам по себе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2008, 10:23 |
|
||
|
AJAX: таблица не обновляется
|
|||
|---|---|---|---|
|
#18+
у тебя функция newXMLHttpRequest() ничего явно не возвращает, тоесть сделай Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2008, 16:53 |
|
||
|
AJAX: таблица не обновляется
|
|||
|---|---|---|---|
|
#18+
Я сделал. Все равно не работает(( У меня получается выводить принятые данные в div с помощью innerHTML. То есть выходит, что браузер нормально принимает даные и корректно их парсит, но почему-то не может добавить новую строку в таблицу. Кстати в Opera и Firefox, данные, которые я вывожу в div появляются и сразу изчезают, т е страница обновляется ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2008, 17:10 |
|
||
|
AJAX: таблица не обновляется
|
|||
|---|---|---|---|
|
#18+
А если строки и столбцы создавать через функции insertRow и insertCell ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2008, 17:18 |
|
||
|
AJAX: таблица не обновляется
|
|||
|---|---|---|---|
|
#18+
Пы.Сы не помешало бы добавить проверку на доступность объекта XMLHttpRequest (тоесть значение параметра ReadyState должно быть 0 или 4) перед отправкой данных, а создавать его не в процедуре запроса а при инициализации страницы, тоесть сделать так: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2008, 17:20 |
|
||
|
AJAX: таблица не обновляется
|
|||
|---|---|---|---|
|
#18+
DmitryTSЯ сделал. Все равно не работает(( У меня получается выводить принятые данные в div с помощью innerHTML. То есть выходит, что браузер нормально принимает даные и корректно их парсит, но почему-то не может добавить новую строку в таблицу. Кстати в Opera и Firefox, данные, которые я вывожу в div появляются и сразу изчезают, т е страница обновляется попробуй последний топ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2008, 17:24 |
|
||
|
AJAX: таблица не обновляется
|
|||
|---|---|---|---|
|
#18+
ШогалА если строки и столбцы создавать через функции insertRow и insertCell ? Спасибо!!!! Все заработало! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2008, 17:46 |
|
||
|
AJAX: таблица не обновляется
|
|||
|---|---|---|---|
|
#18+
Но работает только в IE (( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2008, 17:49 |
|
||
|
AJAX: таблица не обновляется
|
|||
|---|---|---|---|
|
#18+
DmitryTSНо работает только в IE (( Код: plaintext 1. 2. 3. 4. 5. попробуй таким образом. Проверил в IE и Мозиле ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2008, 18:40 |
|
||
|
AJAX: таблица не обновляется
|
|||
|---|---|---|---|
|
#18+
Это не помогает. Зато я понял причину. Opera и Firefox почему-то перезагужают всю страницу полностью. Т. е. новые строки в таблицу добавляются, затем сразу же происходит обновление страницы и таблица возвращается в исходное состояние. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2008, 18:53 |
|
||
|
AJAX: таблица не обновляется
|
|||
|---|---|---|---|
|
#18+
Пы.Сы может, стоить заменить строки Код: plaintext 1. 2. 3. Код: plaintext 1. 2. 3. вообщем у меня так: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2008, 19:01 |
|
||
|
AJAX: таблица не обновляется
|
|||
|---|---|---|---|
|
#18+
и еще сама страница: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2008, 19:05 |
|
||
|
AJAX: таблица не обновляется
|
|||
|---|---|---|---|
|
#18+
DmitryTSЭто не помогает. Зато я понял причину. Opera и Firefox почему-то перезагужают всю страницу полностью. Т. е. новые строки в таблицу добавляются, затем сразу же происходит обновление страницы и таблица возвращается в исходное состояние. Я у себя так проделал и не перегружает О_о ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2008, 19:14 |
|
||
|
AJAX: таблица не обновляется
|
|||
|---|---|---|---|
|
#18+
Переходи с реквеста на калбек (это тоже аякс, но в стиле гугл). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2008, 19:19 |
|
||
|
AJAX: таблица не обновляется
|
|||
|---|---|---|---|
|
#18+
DmitryTSЭто не помогает. Зато я понял причину. Opera и Firefox почему-то перезагужают всю страницу полностью. так может происходить из-за ошибки в яваскрипте или отстутствия строки return false в случае клика по кнопке. Т.е. чтобы не происходило перехода после нажатия на кнопку нужно написать примерно следующее: <button onclick="myFunc(); return false;"> , иначе ФФ делает сабмит формы, даже если кнопка - не submit (хз почему). Тоже самое происходит, если посреди myFunc() встречается ошибка и до строки return false дело не доходит. Из сомнительного в Вашем скрипте: Вы делаете appendChild элементов в tr прямо в объект table. Это ошибка - строки tr таким образом можно добавлять только в tbody, thead или tfoot. Чтобы не заморачиваться с tbody/thead/tfoot, можно использовать insertRow и insertCell , но только не тем кривым макаром, каким "советовали" несколькими постами выше, а согласно спецификациям: Код: plaintext 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2008, 05:26 |
|
||
|
AJAX: таблица не обновляется
|
|||
|---|---|---|---|
|
#18+
ShSergeПереходи с реквеста на калбек (это тоже аякс, но в стиле гугл). ты еще не замучался рекламировать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2008, 05:27 |
|
||
|
AJAX: таблица не обновляется
|
|||
|---|---|---|---|
|
#18+
illionты еще не замучался рекламировать? Замучался. Но какая классная мулька! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2008, 10:43 |
|
||
|
AJAX: таблица не обновляется
|
|||
|---|---|---|---|
|
#18+
Серж. Существуент три способа загрузки контента Ajax: XMLHttpRequesr, IFRAME, SCRIPT. У скрипта есть ровно одно положительное свойство - кросс-доменность. Но есть и отрицательные - невозможность синхронной загрузки, невозможность работы с ответом как с текстом, невозможность работы с ответом как с ЧМД-документом. Второй и боле существенный недостаток для крупных проектов заключается в так называемой жесткой связанности клиентсого и серверного кода, которую можно избежать при взаимодечтвии с запросами и фреймами используя XML или JSON. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2008, 20:49 |
|
||
|
|

start [/forum/topic.php?fid=22&msg=35440281&tid=1456155]: |
0ms |
get settings: |
6ms |
get forum list: |
9ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
25ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
38ms |
get tp. blocked users: |
1ms |
| others: | 219ms |
| total: | 311ms |

| 0 / 0 |
