Показать сообщение отдельно
  #1 (permalink)  
Старый 24.06.2016, 14:33
Аспирант
Отправить личное сообщение для innowed Посмотреть профиль Найти все сообщения от innowed
 
Регистрация: 27.03.2015
Сообщений: 78

почему iframe считается кроссбраузерным способом передачи параметров без перезагрузки
2 дня пытался понять, как с помощью Iframe передавать параметры на сервер, написал такой код:
<script>
function send(params, action){
	var ifr = document.createElement('iframe');
	var targ = 'i'+parseInt(Math.random()*100);
	ifr.name = targ;
	ifr.src = action;
	ifr.style.display='none';
	document.body.appendChild(ifr);
	
	var form = document.createElement('form');
	form.method = 'post';
	form.action = action;
	form.target = targ;
	
	for(var key in params){
		var inp = document.createElement('input');
		inp.type='hidden';
		inp.name = key;
		inp.value = params[key];
		form.appendChild(inp);
	}
	document.body.appendChild(form);
	
	form.submit();
}
send({parametr: "test"}, 'http://127.0.0.1:8080');
</script>

Проверял я этот код на node.js
var http = require('http');
var url = require('url');

var server = new http.Server(function(req, res){
	console.log(req.method, req.url);
	
	var urlParsed = url.parse(req.url);
	console.log(urlParsed.query);
	res.end;
});

server.listen(8080, '127.0.0.1')


А потом ради любопытства я просто начал вставлять любые элементы, у которых есть атрибут src и так же в консоле ловил параметры, так почему нужно использовать iframe? Может я что-то неправильно делаю?
function send(){
	var image = document.createElement('img');
	image.src="http://127.0.0.1:8080?vasya=2";
	document.body.appenChild(image);
}

Последний раз редактировалось innowed, 24.06.2016 в 14:48.
Ответить с цитированием