Запуск ссылки XMLHttpRequest

#javascript #html #xmlhttprequest

#javascript #HTML #xmlhttprequest

Вопрос:

Я сделал простой XMLHttpRequest, который действительно работает, отправляет запрос и т. Д. Точно так же, как в школах W3.

   var xhttp = new XMLHttpRequest();
  xhttp.onreadystatechange = function() {
    if (this.readyState == 4 amp;amp; this.status == 200) {
    document.getElementById("demox").innerHTML = this.responseText;
    }
  };

  xhttp.open("POST", "textx.php", true);
  xhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
  xhttp.send("fname="   textxx);
}
  

Проблема начинается, когда я пытаюсь запустить запрос, нажав на ссылку, которая отправляет меня в файл php, который обрабатывает запрос. Мне трудно понять на моем текущем уровне, почему это не работает, поскольку оно работало с простыми формами и тому подобным.

Я получаю:

 "Notice: Undefined index: fname ..."
  

Итак, я полагаю, это означает, что переменная не была отправлена. Может кто-нибудь объяснить? Или есть способ отладить вещи, которые отправляются с одной страницы на другую. Все, что я нашел, это отладчик в chrome, который действительно фиксирует запросы, но не имеет реальной пользы, поскольку меня отправляют на textx.php страница, и все потеряно.

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

1. Это работает, если я запускаю JS-код с помощью <button> , но когда я использую <a href>, это работает, но, похоже, прогресс на загруженной странице теряется. <button type="button" onclick="loadDocx()">Test x</button> <a href="textx.php" onclick="loadDocx()">Test x2</a>

Ответ №1:

Не совсем уверен, в чем может быть ваша проблема, может быть, попробуйте:

 var xhttp = new XMLHttpRequest();
    xhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    xhttp.open("POST", "textx.php", true);
    xhttp.onreadystatechange = function() {
    if (this.readyState === 4){
        if(this.status===200 || this.status===0){
            document.getElementById("demox").innerHTML = this.responseText;
        }
    };

    var fname = "fname="   textxx;
    xhttp.send(fname);
}
  

Вы можете console.log(xhttp); просмотреть пошаговый профиль и выяснить, в чем может быть проблема.

Ответ №2:

В любом случае, я все еще не уверен, но я загрузил свою страницу (код) на хостинг-сервер, и код сработал. PHP не показывал никаких предупреждений, и все шло по плану. Проблема, похоже, связана с запуском локального сервера (WAMP). Изменение версии PHP не помогло. Возможно, мне придется копнуть немного глубже в этом.