URL эффектов HTTP-запроса

#javascript

#javascript

Вопрос:

Все работает нормально, данные передаются по URL-адресу, и данные отлично помещаются в базу данных. Единственная проблема, с которой я сталкиваюсь, заключается в том, что приведенный ниже код находится на моем index.php страница, она отправляет данные в submitusername.php страница, и все работает, однако после отправки данных на страницу submitusername URL превращается в «/index.php?username =blahblahblah» это не серьезная проблема, но это то, что я хотел бы узнать, как исправить / что является ее причиной.

 function submitUsername(){
    var submitData = new XMLHttpRequest();
    var username = document.getElementById('username').value;
    submitData.onreadystatechange = function() {
        if(submitData.readyState == 4 amp;amp; submitData.status == 200) {
            callback(submitData.responseText);
        }
    },
    submitData.open("GET", "submitusername.php?username=" encodeURIComponent(username), true);
    submitData.send();
}
  

Комментарии:

1. Ничто в показанном вами коде не сделало бы этого. Как вы вызываете функцию? Что callback() делает?

2. Я предполагаю, что у вас есть форма с onsubmit="submitUsername()" . Это вызывает функцию, но затем она отправляет форму обычным образом. Если форма имеет method="GET" , она изменит URL.

Ответ №1:

Ничто в предоставленном вами коде не будет иметь того эффекта, который вы описываете.

Звучит так, как будто вы пытаетесь запустить JavaScript при отправке формы, но форма отправляется нормально и загружает новую страницу.

Вам необходимо предотвратить поведение формы по умолчанию при отправке.

Измените вашу функцию обработчика событий, чтобы захватить объект события и предотвратить поведение по умолчанию, затем убедитесь, что вы соответствующим образом привязали обработчик событий.

 function submitUsername(evt){
    evt.preventDefault
    var submitData = new XMLHttpRequest();
  

и

 document.getElementById('myform').addEventListener('submit', submitUsername);