За последние 24 часа нас посетили 17663 программиста и 1656 роботов. Сейчас ищут 955 программистов ...

помогите улучшить срипт

Тема в разделе "JavaScript и AJAX", создана пользователем Mesher, 3 апр 2012.

  1. Mesher

    Mesher Активный пользователь

    С нами с:
    2 апр 2012
    Сообщения:
    16
    Симпатии:
    0
    Здравствуйте, помогите улучшить срипт:

    Код (Text):
    1. function createXMLHttp() {
    2. if(typeof XMLHttpRequest != "undefined") { // для браузеров аля Mozilla
    3.  
    4. return new XMLHttpRequest();
    5. } else if(window.ActiveXObject) { // для Internet Explorer (all versions)
    6. var aVersions = ["MSXML2.XMLHttp.5.0", "MSXML2.XMLHttp.4.0",
    7. "MSXML2.XMLHttp.3.0", "MSXML2.XMLHttp",
    8. "Microsoft.XMLHttp"
    9. ];
    10. for (var i = 0; i < aVersions.length; i++) {
    11. try { //
    12. var oXmlHttp = new ActiveXObject(aVersions[i]);
    13.  
    14. return oXmlHttp;
    15. } catch (oError) {
    16.  
    17. }
    18. }
    19. throw new Error("Невозможно создать объект XMLHttp.");
    20. }
    21. }
    22.  
    23. /* Очень важная функция, обратите на неё внимание.
    24. Формирует строку запроса "name1=value1&name2=value2&name3...".
    25. Принимает один аргумент - ссылку на форму.
    26. */
    27.  
    28.  
    29. function getRequestBody(oForm) {
    30. var aParams = new Array();
    31. for(var i = 0; i < oForm.elements.length; i++) {
    32. var sParam = encodeURIComponent(oForm.elements[i].name);
    33. sParam += "=";
    34. sParam += encodeURIComponent(oForm.elements[i].value);
    35. aParams.push(sParam);
    36.  
    37. return aParams.join("&");
    38. }
    39.  
    40.  
    41. /* В этой ф-ции мы создаём объект XmlHttp, формируем запрос, инициализируем перехватчик состояний
    42. onreadystatechange, и посылаем наш запрос.
    43.  
    44. Обратите внимание, что во втором аргументе метода open(..) мы передаём
    45. ссылку на oForm.action, это сделано как из соображений безопасности, так и ради
    46. того что-бы сценарий можно-было бы использовать для работы с несколькими страницами.
    47.  
    48. Так-же, стоит отметить факт отправки дополнительного заголовка: "appilaction/x-www-form-urlencoded"
    49. Большинство языков (в том числе и PHP), требуют этого, для корректного выполнения
    50. синтаксического анализа пришедших данных. Этот момент очень важен.
    51.  
    52. */
    53.  
    54.  
    55. function sendRequest() {
    56. var oForm = document.forms[];
    57. var sBody = getRequestBody(oForm);
    58. var oXmlHttp = createXMLHttp();
    59.  
    60. oXmlHttp.open("POST",oForm.action, true);
    61. oXmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
    62.  
    63. oXmlHttp.onreadystatechange = function() {
    64. if(oXmlHttp.readyState == 4) {
    65. if(oXmlHttp.status == 200) {
    66. saveResult(oXmlHttp.responseText);
    67. } else {
    68. saveResult("Ошибка: " + oXmlHttp.statusText);
    69. }
    70. }
    71. };
    72.  
    73. oXmlHttp.send(sBody);
    74. }
    75.  
    76. function saveResult(sText) {
    77. var sElem = document.getElementById("divStatus");
    78. sElem.innerHTML = sText;
    79. }
    Этот скрипт позволаяет выводить резултаты обработки формы не перезагружая страницы. Проблема в том что, скрипт собирает данные только по одной ПЕРВОЙ формы. Если их больше на странице, он все равно обрабатывает только первую. В скрипте я плохо разбираюсь, начинающий. Поэтому прошу помочь.

    P.S. Имена форм у всех разные
     
  2. topas

    topas Активный пользователь

    С нами с:
    16 авг 2006
    Сообщения:
    2.258
    Симпатии:
    36
  3. Mesher

    Mesher Активный пользователь

    С нами с:
    2 апр 2012
    Сообщения:
    16
    Симпатии:
    0
    Спасибо за советы. буду изучать
     
  4. artem-Kuzmin

    artem-Kuzmin Активный пользователь

    С нами с:
    16 фев 2012
    Сообщения:
    809
    Симпатии:
    0
    Не переходите на jquery не узнав норм хотя бы основ js или так и останитесь знать минимум.
    А Jq всего лишь набор кучки ненужных функций, проще для себя сделать свою сборку..
    А многие скрипты какие я видел на jq тормозят на ноут! А которые без нее написанные людьми лучше работают
     
  5. YSandro

    YSandro Старожил

    С нами с:
    7 апр 2011
    Сообщения:
    2.523
    Симпатии:
    2
    artem-Kuzmin, JQ - всего лишь набор самых полезных функций, которые нифига не проще писать самому, даже когда знаешь эти "основы" и особенности JS. Почитай вон в Вики
     
  6. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    советую начинать с jquery и не вспоминать про чистый js так долго, как получится.
     
  7. artem-Kuzmin

    artem-Kuzmin Активный пользователь

    С нами с:
    16 фев 2012
    Сообщения:
    809
    Симпатии:
    0
    Возьму за пример)..
    Многие люди пишушие на Jq даже не знают, что объявляя свои переменные без var загаживают глобальное пространство.Ну понятно, что вар имеет смысл лишь внутри функций.
    Плюс нужно знать о undefined,null подобном.
     
  8. Mesher

    Mesher Активный пользователь

    С нами с:
    2 апр 2012
    Сообщения:
    16
    Симпатии:
    0
    А есть кто сможет помочь именно с этим кодом ?

    Как сделать, чтобы он просматривал все формы, а не только первую?

    Код (Text):
    1. function sendRequest() {
    2. var oForm = document.forms[0];
    - я как понимаю здесь надо решать этот вопрос, но как ?
     
  9. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    многие негры - насильники.
    не надо путать не связанные вещи. это такого седомудрого старичка, как ты совсем не красит =)

    ну на жуке это выглядит примерно так:
    Код (Text):
    1. $.each($('form'), function(key, value) {
    2. });