Показать сообщение отдельно
  #1 (permalink)  
Старый 15.12.2016, 23:16
Новичок на форуме
Отправить личное сообщение для n0kkw1n Посмотреть профиль Найти все сообщения от n0kkw1n
 
Регистрация: 15.12.2016
Сообщений: 7

Ajax запрос через метод submit()
Доброго времени суток, возникла такая задача раньше использовал всегда Jquery, а сейчас необходимо отправить запрос AJAX на чистом JS,
создал объект XMLHttpRequest:
function createXMLHttp() {
        if (typeof XMLHttpRequest != "undefined") { //  аля Mozilla
            return new XMLHttpRequest();
        } else if (window.ActiveXObject) { // для IE 
            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 = encodeURIComponent(oForm.elements[i].name);
        sParam += "=";
        sParam += encodeURIComponent(oForm.elements[i].value);
        aParams.push(sParam);
    }
    return aParams.join("&");
}
// функция Ajax POST
function postAjax(url, oForm, callback) { 
    // создаем Объект
    var oXmlHttp = createXMLHttp();
    // получение данных с формы
    var sBody = getRequestBody(oForm);
    // подготовка, объявление заголовков
    oXmlHttp.open("POST", url, true);
    oXmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
    // описание функции, которая будет вызвана, когда придет ответ от сервера
    oXmlHttp.onreadystatechange = function() {
        if (oXmlHttp.readyState == 4) {
            if (oXmlHttp.status == 200) {
                callback(oXmlHttp.responseText);
            } else {
                callback('error' + oXmlHttp.statusText);
            }
        }
    };
    // отправка запроса, строка данных с формы
    oXmlHttp.send(sBody);
}

И сама форма:
var theForm = document.getElementById( 'theForm' );
 
            new stepsForm( theForm, {
                onSubmit : function( form ) {
                    classie.addClass( theForm.querySelector( '.simform-inner' ), 'hide' );
 
                    form.submit();//отправка формы
                    
                    var messageEl = theForm.querySelector( '.final-message' );
                    messageEl.innerHTML = 'Спасибо, Ваша анкета отправлена';
                    classie.addClass( messageEl, 'show' );
                }
            } );


Все работает как надо, но хотелось бы сделать отправку через AJAX и выводилось .final-message, как подключить его не пойму
Ответить с цитированием