Здравствуйте, помогите улучшить срипт: Код (Text): function createXMLHttp() { if(typeof XMLHttpRequest != "undefined") { // для браузеров аля Mozilla return new XMLHttpRequest(); } else if(window.ActiveXObject) { // для Internet Explorer (all versions) var aVersions = ["MSXML2.XMLHttp.5.0", "MSXML2.XMLHttp.4.0", "MSXML2.XMLHttp.3.0", "MSXML2.XMLHttp", "Microsoft.XMLHttp" ]; for (var i = 0; i < aVersions.length; i++) { try { // var oXmlHttp = new ActiveXObject(aVersions[i]); return oXmlHttp; } catch (oError) { } } throw new Error("Невозможно создать объект XMLHttp."); } } /* Очень важная функция, обратите на неё внимание. Формирует строку запроса "name1=value1&name2=value2&name3...". Принимает один аргумент - ссылку на форму. */ function getRequestBody(oForm) { var aParams = new Array(); for(var i = 0; i < oForm.elements.length; i++) { var sParam = encodeURIComponent(oForm.elements[i].name); sParam += "="; sParam += encodeURIComponent(oForm.elements[i].value); aParams.push(sParam); return aParams.join("&"); } /* В этой ф-ции мы создаём объект XmlHttp, формируем запрос, инициализируем перехватчик состояний onreadystatechange, и посылаем наш запрос. Обратите внимание, что во втором аргументе метода open(..) мы передаём ссылку на oForm.action, это сделано как из соображений безопасности, так и ради того что-бы сценарий можно-было бы использовать для работы с несколькими страницами. Так-же, стоит отметить факт отправки дополнительного заголовка: "appilaction/x-www-form-urlencoded" Большинство языков (в том числе и PHP), требуют этого, для корректного выполнения синтаксического анализа пришедших данных. Этот момент очень важен. */ function sendRequest() { var oForm = document.forms[]; var sBody = getRequestBody(oForm); var oXmlHttp = createXMLHttp(); oXmlHttp.open("POST",oForm.action, true); oXmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); oXmlHttp.onreadystatechange = function() { if(oXmlHttp.readyState == 4) { if(oXmlHttp.status == 200) { saveResult(oXmlHttp.responseText); } else { saveResult("Ошибка: " + oXmlHttp.statusText); } } }; oXmlHttp.send(sBody); } function saveResult(sText) { var sElem = document.getElementById("divStatus"); sElem.innerHTML = sText; } Этот скрипт позволаяет выводить резултаты обработки формы не перезагружая страницы. Проблема в том что, скрипт собирает данные только по одной ПЕРВОЙ формы. Если их больше на странице, он все равно обрабатывает только первую. В скрипте я плохо разбираюсь, начинающий. Поэтому прошу помочь. P.S. Имена форм у всех разные
Рекомендую воспользоваться jQuery Form: http://www.linkexchanger.su/2008/45.html Работа с AJAX через jQuery: http://jquery-docs.ru/ajax/ На всякий случай, если jQuery просто не нужна, то есть библиотека для работы с Ajax: http://dklab.ru/lib/JsHttpRequest/manual.html
Не переходите на jquery не узнав норм хотя бы основ js или так и останитесь знать минимум. А Jq всего лишь набор кучки ненужных функций, проще для себя сделать свою сборку.. А многие скрипты какие я видел на jq тормозят на ноут! А которые без нее написанные людьми лучше работают
artem-Kuzmin, JQ - всего лишь набор самых полезных функций, которые нифига не проще писать самому, даже когда знаешь эти "основы" и особенности JS. Почитай вон в Вики
Возьму за пример).. Многие люди пишушие на Jq даже не знают, что объявляя свои переменные без var загаживают глобальное пространство.Ну понятно, что вар имеет смысл лишь внутри функций. Плюс нужно знать о undefined,null подобном.
А есть кто сможет помочь именно с этим кодом ? Как сделать, чтобы он просматривал все формы, а не только первую? Код (Text): function sendRequest() { var oForm = document.forms[0]; - я как понимаю здесь надо решать этот вопрос, но как ?
многие негры - насильники. не надо путать не связанные вещи. это такого седомудрого старичка, как ты совсем не красит =) ну на жуке это выглядит примерно так: Код (Text): $.each($('form'), function(key, value) { });