Нужен универсальный (как можно ближе к универсальности) скрипт по отправке форм средствами ajax.
Нашел на сайте (http://netfaq.ru/ajax/ajax_post_request) скрипт и добавил некие возможности.
CODE ( javascript):
скопировать код в буфер обмена
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."); } } function getRequestBody(oForm) { var aParams = new Array(); for(var i = 0; i < oForm.elements.length; i++) { var sParam=''; if(oForm.elements[i].type=='radio'){ if(oForm.elements[i].checked){ sParam += encodeURIComponent(oForm.elements[i].name) sParam += "="; sParam += encodeURIComponent(oForm.elements[i].value);} }else if(oForm.elements[i].type=='checkbox'){ sParam += encodeURIComponent(oForm.elements[i].name) sParam += "="; if(oForm.elements[i].checked){ sParam += encodeURIComponent(oForm.elements[i].value); }else{ sParam +='no'; } }else{ sParam += encodeURIComponent(oForm.elements[i].name); sParam += "="; sParam += encodeURIComponent(oForm.elements[i].value); } aParams.push(sParam); } return aParams.join("&"); } function sendRequest(oForm,res) { var oForm = document.getElementById(oForm); var sBody = getRequestBody(oForm); var oXmlHttp = createXMLHttp(); oXmlHttp.open("POST",oForm.action, true); oXmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); oXmlHttp.setRequestHeader("Content-length", sBody.length); oXmlHttp.setRequestHeader("Connection", "close"); oXmlHttp.onreadystatechange = function() { if(oXmlHttp.readyState == 4) { if(oXmlHttp.status == 200) { saveResult(oXmlHttp.responseText,res); } else { saveResult("Ошибка: " + oXmlHttp.statusText); oXmlHttp.abort(); } } }; oXmlHttp.send(sBody); } function saveResult(sText,res) { var sElem = document.getElementById(res); sElem.innerHTML = sText; }
Принцип такой.
в form прописать id.
В каком нибудь месте прописать OnClick=sendRequest('id form','id div-result');
Но особо я JS не знаю, и хотел бы спросить, может что еще надо дописать, убрать, исправить?
|