Просмотр файла style/themes/web/ajax.js

Размер файла: 3.88Kb
  1. var xmlHttp = createXmlHttpRequestObject();
  2. // создает экземпляр объекта XMLHttpRequest
  3. function createXmlHttpRequestObject()
  4. {
  5. // переменная для хранения ссылки на объект XMLHttpRequest
  6. var xmlHttp;
  7. // эта часть кода должна работать во всех броузерах, за исключением
  8. // IE6 и более старых его версий
  9. try
  10. {
  11. // попытаться создать объект XMLHttpRequest
  12. xmlHttp = new XMLHttpRequest();
  13. }
  14. catch (e)
  15. {
  16. // предполагается, что в качестве броузера используется
  17. // IE6 или более старая его версия
  18. var XmlHttpVersions = new Array("MSXML2.XMLHTTP.6.0",
  19. "MSXML2.XMLHTTP.5.0",
  20. "MSXML2.XMLHTTP.4.0",
  21. "MSXML2.XMLHTTP.3.0",
  22. "MSXML2.XMLHTTP",
  23. "Microsoft.XMLHTTP");
  24. for (var i = 0; i < XmlHttpVersions.length && !xmlHttp; i++)
  25. {
  26. try
  27. {
  28. // попытаться создать объект XMLHttpRequest
  29. xmlHttp = new ActiveXObject(XmlHttpVersions[i]);
  30. }
  31. catch (e) {
  32. }
  33. }
  34. }
  35. // вернуть созданный объект или вывести сообщение об ошибке
  36. if (!xmlHttp)
  37. alert("Ошибка создания объекта XMLHttpRequest.");
  38. else
  39. return xmlHttp;
  40. }
  41. // вызывается для чтения файла с сервера
  42. function process()
  43. {
  44. // продолжать только если в xmlHttp не пустая ссылка
  45. if (xmlHttp)
  46. {
  47. // попытаться установить соединение с сервером
  48. try
  49. {
  50. // инициировать чтение файла с сервера
  51. xmlHttp.open("GET", 'http://'+ location.host + "/pages/mail.php?act=ajax" , true);
  52. xmlHttp.onreadystatechange = handleRequestStateChange;
  53. xmlHttp.send(null);
  54. }
  55. // вывести сообщение об ошибке в случае неудачи
  56. catch (e)
  57. {
  58. setTimeout('process()',5000);
  59. }
  60. }
  61. }
  62. // эта функция вызывается при изменении состояния запроса HTTP
  63. function handleRequestStateChange()
  64. {
  65. // когда readyState = 4, мы можем прочитать ответ сервера
  66. if (xmlHttp.readyState == 4)
  67. {
  68. // продолжать, только если статус HTTP равен «OK»
  69. if (xmlHttp.status == 200)
  70. {
  71. try
  72. {
  73. // обработать ответ, полученный от сервера
  74. handleServerResponse();
  75. }
  76. catch (e)
  77. {
  78. // вывести сообщение об ошибке
  79. setTimeout('process()',5000);
  80. }
  81. }
  82. else
  83. {
  84. setTimeout('process()',5000);
  85. }
  86. }
  87. }
  88. // обрабатывает ответ, полученный от сервера
  89. function handleServerResponse()
  90. {
  91. // прочитать сообщение, полученное от сервера
  92. var xmlResponse = xmlHttp.responseXML;
  93. // предотвратить потенциально возможные ошибки в IE и Opera
  94. if (!xmlResponse || !xmlResponse.documentElement)
  95. throw("Неверная структура XML:\n" + xmlHttp.responseText);
  96. // предотвратить потенциально возможные ошибки в Firefox
  97. var rootNodeName = xmlResponse.documentElement.nodeName;
  98. if (rootNodeName == "parsererror")
  99. throw("Invalid XML structure");
  100. xmlRoot = xmlResponse.documentElement;
  101. new_mail = xmlRoot.getElementsByTagName('new_mail').item(0).firstChild.data;
  102. if (new_mail > 0)
  103. {
  104. myMail = document.getElementById("myMail");
  105. // вывести полученный код HTML
  106. myMail.innerHTML = '<a href="http://'+ location.host +'/pages/mail.php">Почта ('+ new_mail +')</a>';
  107. }
  108. setTimeout('process()',5000);
  109. }