Вопрос

Как видно из заголовка, мой вызов Ajax фактически заставляет форму отправляться в действие по умолчанию, почему? Я никогда не сталкивался с этим раньше, все остальные мои Ajax-вызовы никогда не делали этого.

function newAjax(t,u){ //t = type(post/get), u = url
    var resource = null;
    if (window.ActiveXObject) { 
        resource = new ActiveXObject("Microsoft.XMLHTTP"); 
    } 
    else if (window.XMLHttpRequest) { 
        resource = new XMLHttpRequest(); 
        resource.overrideMimeType('text/html');
    }
    resource.open(t,u,false);
    resource.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');
    return resource;
}

function send_newsletter(){
    formObj = document.getElementById("news_form");
    var inputs = formObj.getElementsByTagName("INPUT");
    var parameters = "";
    for(i = 0; i < inputs.length; i++){
        parameters += inputs[i].name+"="+encodeURI(inputs[i].value);
        if(i != inputs.length-1){
            parameters += "&";
        }
    }
    var url = "whereitshouldbegoing.com";
    var ajax = newAjax("POST",url);
    ajax.onreadystatechange = ajaxResult;
    ajax.setRequestHeader("Content-length", parameters.length);
    ajax.setRequestHeader("Connection", "close");
    ajax.send(parameters);
}

Все это прекрасно работает вплоть до строки .send, которая является ошибкой, вызывающей отправку формы (я также не представляю, действительно ли запрос ajax завершается).

Функция send_newsletter вызывается из типа ввода = " изображение " элемент с onclick = " send_newsletter () "

Пожалуйста, не говорите мне использовать jQuery или другую библиотеку, как бы мне этого ни хотелось, мы не можем использовать какие-либо внешние библиотеки, корпоративные правила и все такое.

Это было полезно?

Решение

Ввод типа " изображение " будет работать так же, как кнопка отправки , Используйте ввод типа кнопки или кнопки для запуска вашего метода.

<input type="button" onclick="send_newsletter()" value="Send" />

<button onlclick="send_newsletter()">... </button>

<a href="#" onclick="send_newsletter(); return false;"><img src="... /></a>

Другие советы

Вы используете кнопку отправки для вызова send_newsletter ?

onreadystatechange функция обратного вызова 'ajaxResult' не вызывается, потому что вы делаете синхронный вызов на сервер:

resource.open(t,u,false);

если вы хотите, чтобы ajaxResult вызывался, измените его на:

resource.open(t,u,true);

сейчас это то, что я вижу. Вы должны предоставить больше информации, например, как вы вызываете send_newsletter ?

<Ч>

РЕДАКТИРОВАТЬ :( после комментария автора)

INPUT типа image является графической кнопкой отправки .

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top