@AsdfAsdfSK

Сервер статус 0?

Доброго утра всем. Изучая JS,а именно AJAX,столкнулся со следующей проблемой:
при отправке GET запроса сервер выдаёт статус 0.
Код:
let button=document.querySelector('.centerButtonResumeBlock')

			button.addEventListener('click',clicker)


			function clicker(){
				var xhr=new XMLHttpRequest();
				xhr.open('GET','inner.js',true)
				xhr.send()


				if(xhr.status!=200){
					alert(xhr.status + ":"  + xhr.statusText)
				}
				else{
					alert(xhr.responseText)
				}

			}


^Запрос

var http = require('http');
var url = require('url');
var querystring = require('querystring');
var static = require('node-static');
var file = new static.Server('.', {
    cache: 0
});


function accept(req, res) {

    if (req.url == '/inner.js') {
        // искусственная задержка для наглядности
        setTimeout(function() {
            file.serve(req, res);
        }, 2000);
    } else {
        file.serve(req, res);
    }

}


// ------ запустить сервер -------

if (!module.parent) {
    http.createServer(accept).listen(8080);
} else {
    exports.accept = accept;
}

^сервер

Думаю,json файл смысла закреплять сюда нет.
P.S все файлы находятся в одной папке Components,так что дело не в том,что я неверно указал путь к джсон файлу.
PPS сам node js рабочий
Буду благодарен за любую помощь
  • Вопрос задан
  • 199 просмотров
Решения вопроса 1
@Interface
Скорее всего из-за краткой записи xhr.open('GET','inner.js',true)
запрос уходит по протоколу file:// потому что скорее всего вы открываете сайт с жесткого диска напрямую, а в xhr.open не указываете протокол явно, поэтому он "наследуется" от страницы.

Я советую вам:
1) открывать сайт через локальный сервер. То есть по адресу по типу localhost:5000 . Для этого может помочь библиотека serve: https://www.npmjs.com/package/serve
после того как сможете открыть сайт на localhost'e
2) максимально упростите обработку запроса на ноде и код сервера. Например шлите всегда на все "Hello world!"

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

Существенна вероятность того, что вам и не нужно решать эту проблему, а достаточно просто запустить локальный сервер.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы