>Форум Mozilla Россия http://forum.mozilla-russia.org/index.php >Разработка http://forum.mozilla-russia.org/viewforum.php?id=18 >FF 3.5.3 и AJAX http://forum.mozilla-russia.org/viewtopic.php?id=40268 |
malmax > 25-09-2009 15:57:27 |
Форма(id=mainform) загружается AJAX'ом, а далее перебираются все элементы формы и создается POST запрос, который и отправляется. |
Sergeys > 26-09-2009 18:16:23 |
Тема перенесена из форума «Firefox» в форум «Разработка». |
formatC'vt > 28-09-2009 09:38:49 |
а у меня alert(document.getElementById('mainform')); выводит "[object HTMLFormElement]" |
malmax > 29-09-2009 13:35:45 |
Первоначальная информация: Выделить код Код:<a href=#step1 id='step1' onClick="sendRequest('edittypeincome.php?id_catalog=7', 'mainbody', callback);"><B>Шаг 1. </B>Получение первоначальной информации</A> ...<td><SPAN id=mainbody> </SPAN></td> AJAX: Выделить код Код:var httpRequest = createHttpRequest(); var resultId = ''; var callback=''; function createHttpRequest() { var httpRequest; var browser = navigator.appName; var url; if (browser == "Microsoft Internet Explorer") { httpRequest = new ActiveXObject("Microsoft.XMLHTTP"); } else { httpRequest = new XMLHttpRequest(); } return httpRequest; } function sendRequest(file, _resultId, getRequestProc) { resultId = _resultId; url=file; document.getElementById(resultId).innerHTML = stat(httpRequest.readyState); httpRequest.open('get', url); httpRequest.onreadystatechange = getRequestProc; httpRequest.setRequestHeader("Referer", location.href); httpRequest.send(null); httpRequestTimeout = setTimeout("httpRequest_abort(resultId,url)", 10000); } * Кодирование данных (простого ассоциативного массива вида { name : value, ...} в URL-escaped строку (кодировка UTF-8) */ function urlEncodeData(formid) { var query = []; var data; data = document.getElementById(formid); if (data instanceof Object) { for (i=0; i<data.elements.length; i++) { if(data.elements[i].name!=null) query.push(encodeURIComponent(data.elements[i].name) + "=" + encodeURIComponent(data.elements[i].value)); } return query.join('&'); } else { return data; } } /* Выполнение POST-запроса url - адрес запроса data - параметры в виде простого ассоциативного массива { name : value, ...} */ function serverRequest(formid,_url,_resultId) { if(_url!=null) //если задается url - то перезадаем url url=_url; if(_resultId!=null) //вывод в другое место { resultId=_resultId; //куда происходит запись результатов id_to_write=0; //не надо перезаписывать инфу в опенере } if(!httpRequest) return false; httpRequest.open('POST',url,true); /* Не отправлялись пост запросы когда была Правда в ФФ3.5.3 */ if (httpRequest.setRequestHeader) httpRequest.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); httpRequest.send(urlEncodeData(formid)); if(callback) httpRequest.onreadystatechange=callback; else httpRequest.onreadystatechange = getRequest; httpRequestTimeout = setTimeout("httpRequest_abort(resultId,url)", 10000); document.getElementById(resultId).innerHTML = stat(httpRequest.readyState); return true; } После получение информации от скрипта: Выделить код Код:<td> <span id="mainbody"> <h2>ШАГ 1. Получение информации</h2> <form id="dynamicform" onsubmit="serverRequest(this.id); return false;" name="form" method="post"> <table><tbody><tr> <td valign="top">С какого числа *:</td> <td valign="top"><input name="dates" value="2009-09-01" size="10" maxlength="10" type="text"></td> </tr> <tr> <td> </td> <td valign="top"><span style="color: blue;">Время в формате ГГГГ-ММ-ДД</span><br></td> </tr> <tr> <td valign="top">По какое число *:</td> <td valign="top"><input name="datee" value="2009-09-29" size="10" maxlength="10" type="text"></td> </tr> <tr> <td> </td> <td valign="top"><span style="color: blue;">Время в формате ГГГГ-ММ-ДД</span><br></td> </tr> <tr> <td valign="top">Оплата*:</td> <td valign="top"><input name="opl_1" value="26.5" size="10" maxlength="10" type="text"></td> </tr> <input name="id_catalog" value="7" type="hidden"> <tr> <td></td> <td> <input class="button" value="сохранить" type="submit"> </td> </tr> </tbody></table></form></span> </td> При нажатии на сохранить Firebug показывал пустой POST запрос |
be@ver > 29-09-2009 14:38:51 |
malmax, я слабо знаком с XMLHttpRequest(), я больше с php работал. но, насколько знаю, данные post запроса должны быть сформированы в виде ИМХО, данные то у тебя передаются, но "перехватчик" не видит размер данных и не определяет сколько перехватывать нужно |
formatC'vt > 02-10-2009 14:34:08 |
возвращаясь к первоначальному посту, добавил alert(document.getElementById(formid)); |