@DarCKoder

Как получить данные с get запроса от клиента(Ajax), на сервере?

Скрипт сервера:
var http = require('http'),
	fs = require('fs');


var server = http.createServer(function(req, res) {
	switch(req.url) {
		case '/':
			fs.readFile('index.html', function(err, content) {
				if(err) {
					res.status = 500;
					res.end('server error');
				} else {
					res.writeHead('Content-type', 'text/html; charset=utf-8');
					res.end(content);
				}
			});
			break;
		default: 
			res.end('Error');
	}
}).listen('1333');

server.on('request', function(req, res) {
	res.writeHead(200);
	console.log(req.method);
	console.log(req.headers);
	console.log(req.url);
	res.write('hi');
	res.end();
});


Скрипт клиента:
var button = document.getElementById('button');
button.onclick = function() {
	var text = document.getElementById('text').value;


	var xhr = new XMLHttpRequest();
	xhr.open('GET', 'info.json', false);
	xhr.send();

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

Как получить значения, на сервере которые я отправил с клиента?
При каком событии отслеживать?

Попытался через:
server.on('request', function(req, res) {
	res.writeHead(200);
	console.log(req.method);
	console.log(req.headers);
	console.log(req.url);
	res.write('hi');
	res.end();
});

Так теперь он мне и index.html не хочет давать.
При запуске сервера, при первом входе на сайт выдаёт "hi".
А во второй раз(при перезагрузке страницы) уже сервер падает.
48df27d4fa2e4a7a9b2cb28197a96707.png
  • Вопрос задан
  • 1057 просмотров
Решения вопроса 1
YarkoDzech
@YarkoDzech
будучи трезвым, сдержи все свои пьяные обещания!
По результатам переписки.
Код который я даю не предназначен для использования! Это просто пример нативного ajax и асинхрона от nodejs. Вообще, нужно придерживаться хотябы rest и если что то летит на сервер, то обязательно с формы и post/put запросом. Get только для получения данных с сервера.
И реквесты в ноде так не обрабатывают.
И респонс, если прилетела кирилица, отправит назад отработку.
Всё что написано ниже чисто для понимания сути.

var simplePage = '<h1>тестовая отправка данных без формы</h1>'+
'<hr><input type="text" id="txt">'+
'<input type="button" id="button" value="отправить что-то">'+
'<script>(function(){'+
'var button = document.getElementById("button");'+
'button.onclick = function(){var xhr = new XMLHttpRequest();'+
'xhr.open("GET","/toserver/"+document.getElementById("txt").value, true);xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");'+
'xhr.send();'+
'xhr.onreadystatechange = function(){if(xhr.readyState == 4) alert(xhr.responseText)}}'+
'})()</script>';
var http = require('http');
var server = http.createServer(function(req,res){
	console.log(req.url);
	if (req.url === '/') {
		res.writeHead(200, {'Content-type' : 'text/html; charset=utf-8'});
		res.write(simplePage);
		res.end();
	}
	else{
		res.writeHead(200, {'Content-type' : 'text/html; charset=utf-8'});
		//res.write(simplePage);
		res.end('вы отправили нам '+req.url.slice(10));
	}
});	
server.listen(1333,function(){console.log('listen server at 1333')});
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
mak_ufo
@mak_ufo
server.on('request', (req, res) => {})
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы