Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   переделать GET запрос (https://javascript.ru/forum/misc/38074-peredelat-get-zapros.html)

iluxinil 17.05.2013 19:34

переделать GET запрос
 
есть некая форма, она отправляет 3 переменные в GET запрос
a1=pole1&a2=pole2&a3=pole3

собственно нужно, чтобы форма отправляла запрос вида
a=pole1+pole2+pole3

bes 18.05.2013 00:57

поясни смысл осуществления этой операции


думаю никак не отправить нужный тебе параметр, если ты хочешь вмешаться в последствия отправки формы, не вмешавшись в код этой отправки
хотя может есть способ

так никак, location.search новыми параметрами не заполнить, location.search изменяется после отправки формы, onunload не помогает, хотя здесь пишут, что можно http://javascript.ru/window-location (извращался по-всякому, у меня не вышло)

в нененавязчивом стиле some.php
<script>
function sendMyParam() {
	var str1 = '?my_param=my_value';
	var str2 = location.href.replace(location.search, '') + str1;
	location = str2
	window.location.search = '?my_param=my_value'; 
	console.log(str2);
	console.log("location.search=" + location.search);
}
</script>

<body onbeforeunload="return ''" onunload="sendMyParam()">
<form action"<?=$_SERVER['PHP_SELF']?>" onsubmit="sendMyParam()">
	<input name="a" value="pole">
	<input type="submit">
</form><br>

<?php
if (isset($_GET['my_param'])) echo $_GET['my_param']; else echo "no<br>";
if (isset($_GET['a'])) echo $_GET['a']; else echo "no";
?>



и так никак, хотя action меняется, параметр не приходит
<body onbeforeunload="return ''">
<?php
if (isset($_GET['my_param'])) echo "my_param=".$_GET['my_param'].'<br>'; else echo "no my_param<br>";
if (isset($_GET['a'])) echo "a=".$_GET['a'].'<br>'; else echo "no a<br>";
?>
<form action"some.php" onmousedown="this.action='some.php?my_param=my_value'"
	onsubmit="this.action='some.php?my_param=my_value'; return false">
	<input name="a" value="pole">
	<input type="submit">
</form>



но можно убрать name у полей и отправить в <input type="hidden"> value, которое сформировать так как тебе нужно

<body onbeforeunload="return ''">
<?php
if (isset($_GET['my_param'])) echo "my_param=".$_GET['my_param'].'<br>'; else echo "no my_param<br>";
if (isset($_GET['a'])) echo "a=".$_GET['a'].'<br>'; else echo "no a<br>";
?>
<form action"<?=$_SERVER['PHP_SELF']?>" onsubmit="this.my_param.value='my_value+' + this.a.value">
	<input name="a" value="pole">
	<input name="my_param" type="hidden">
	<input type="submit">
</form>

iluxinil 18.05.2013 14:44

спасибо.
мне последний вариант должен подойти.

только вместо "+" в строке браузера "%2B"
в оригинальном запросе "+" остается. а в моем нет.

<form action"<?=$_SERVER['PHP_SELF']?>" onsubmit="this.my_param.value=this.a1.value + '+' + this.a2.value">
	    <input name="my_param" type="hidden">
        <input name="a1" value="pole1">
        <input name="a2" value="pole2">
	    <input type="submit">
	</form>


он запрос не совсем понимает.
выводит надпись результаты по запросу и сам текст запроса нормально.
а вот сами результаты ищет только когда в урле "+"

подскажите, как исправить?

Deff 18.05.2013 15:51

Перехватить отправку
<form onsubmit="MyFunk();return false;"

В функции считать значения полей
var dataSend = $("#Myform").serialize( );
Конвертировать как надо и отправить Get запросом

iluxinil 18.05.2013 16:29

Цитата:

Сообщение от Deff (Сообщение 251306)
Перехватить отправку
<form onsubmit="MyFunk();return false;"

В функции считать значения полей
var dataSend = $("#Myform").serialize( );
Конвертировать как надо и отправить Get запросом

а можно на примере.
я только начинаю и на примере мне гораздо понятнее.
заранее спасибо.

bes 18.05.2013 20:39

Цитата:

Сообщение от iluxinil
он запрос не совсем понимает.
выводит надпись результаты по запросу и сам текст запроса нормально.
а вот сами результаты ищет только когда в урле "+"

он это кто? поясни подробно, что делаешь (второй раз прошу)

Deff имеет в виду отправить форму ajax-м

в том же нененавязчивом стиле
<script src="jquery-1.8.3.min.js"></script>
<body onbeforeunload="return ''">
<?php
if (isset($_GET['my_param'])) echo "my_param=".$_GET['my_param'].'<br>'; else echo "no my_param<br>";
if (isset($_GET['a'])) echo "a=".$_GET['a'].'<br>'; else echo "no a<br>";
?>
<form class="myForm" action"<?=$_SERVER['PHP_SELF']?>" 
	onsubmit="$.get('some.php', {my_param: this.a1.value + '+' + this.a2.value}, function (data) {alert(data)}); return false">
	<input name="my_param" type="hidden">
	<input name="a1" value="pole1">
	<input name="a2" value="pole2">
	<input type="submit">
</form>


PS: + может превращаться в пробел
<body onbeforeunload="return ''">
<?php
if (isset($_GET['my_param'])) echo "my_param=".$_GET['my_param'].'<br>'; else echo "no my_param<br>";
if (isset($_GET['a'])) echo "a=".$_GET['a'].'<br>'; else echo "no a<br>";
?>
<form class="myForm" action"<?=$_SERVER['PHP_SELF']?>" onsubmit="this.my_param.value=this.a1.value + ' ' + this.a2.value">
	<input name="my_param" type="hidden">
	<input name="a1" value="pole1">
	<input name="a2" value="pole2">
	<input type="submit">
</form>

iluxinil 18.05.2013 21:32

Вложений: 1
Цитата:

Сообщение от bes
он это кто? поясни подробно, что делаешь (второй раз прошу)

он это поиск по сайту (по тегам) как раз принимает строку вида a=teg1+teg2
хочется убрать поле ввода тегов и сделать что то вроде этого

iluxinil 18.05.2013 21:34

Цитата:

Сообщение от bes
Deff имеет в виду отправить форму ajax-м

сложновато пока это для меня, но попробую разобраться.

Цитата:

Сообщение от bes
PS: + может превращаться в пробел

так мне надо чтобы именно + оставался.

Deff 18.05.2013 21:56

Цитата:

Сообщение от iluxinil
хочется убрать поле ввода тегов и сделать что то вроде этого

Тогда Вам удобнее скрыть старую форму/если нет возможности трансформировать РНР приём формы нового вида/,
Сгенерить div c радио кнопками и просто кнопкой "найти", - по клику на которую, - будут считаны значения радиокнопок и вставлены в старую форму.

bes 18.05.2013 22:05

Цитата:

Сообщение от iluxinil
он это поиск по сайту (по тегам) как раз принимает строку вида a=teg1+teg2

покажи код поиска, тогда можно будет рассуждать

<body onbeforeunload="return ''">
<?php
if (isset($_GET['my_param'])) echo "my_param=".$_GET['my_param'].'<br>'; else echo "no my_param<br>";
if (isset($_GET['a'])) echo "a=".$_GET['a'].'<br>'; else echo "no a<br>";
?>
<form class="myForm" action"<?=$_SERVER['PHP_SELF']?>" onsubmit="this.my_param.value=this.a1.value + '+' + this.a2.value">
	<input name="my_param" type="hidden">
	<input name="a1" value="pole1">
	<input name="a2" value="pole2">
	<input type="submit">
</form>
<script>
console.log(location.search);
console.log(unescape(location.search));
</script>

http://javascript.ru/encodeuricomponent


Часовой пояс GMT +3, время: 14:53.