Отправка POST через JS без перехода на другую страницу
Мне нужно, чтобы JS отправил POST'ом необходимые переменные. Но при этом не должно быть перехода на другую страницу (То есть это не "submit()") и никаких данных возвращаться не должно. Просто POST отправка.
Для примера можно отправить переменную "abc" со значением "def" на "http://192.168.1.1/page.php" (Который уже сам сделает все остальное). Как такое сделать? |
Создаем невидимый фрейм, форму, устанавливаем форме атрибуты method="post", action="http://192.168.1.1/page.php", target равный name (или id?) фрейма, наполняем нужными данными и... submit();
|
Цитата:
|
Вообще-то сама форма не будет находиться во фрейме. Она
Во-вторых, значение вы задаете один раз и оно ни к чему не привязано. Само собой, оно не изменится, когда запрос улетит во фрейм. |
Цитата:
Но скрипт мне нужен для userjs (В Опере и Мозиле) и в нем нужно обойтись без document.write() (Т.к. тогда исчезает все, кроме написанного этой функцией). А фрейм и форму в страницу только document.write()'ом умею вставлять. |
|
Цитата:
Цитата:
|
Цитата:
|
Цитата:
Там дан пример на добавление LI к UL с id="list" // элемент-список UL var list = document.getElementById('list') // новый элемент var li = document.createElement('LI') li.innerHTML = 'Новый элемент списка' // добавление в конец list.appendChild(li) А если нужно добавить <iframe src="http://192.168.1.1/page.php" бла-бла ></iframe> в body ? |
m-mikle, ищем :)
|
Короче, я уже что только не перепробовал, ничего не получается.
Весь замысел был в том, что бы JS отправлял на http://192.168.1.1/page.php либо POST'ом, либо GET'ом адрес текущей страницы, и при этом пользователь ничего не замечал. Пытался и фрейм сделать с адресом "http://192.168.1.1/page.php?url=" + window.location.hostА page.php ловит адрес GET'ом. Но ничего не работает. Как все таки сделать??? |
var xmlHttp=connect(); function connect(){ var xmlhttp; try { xmlhttp = new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { try { xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); } catch (E) { xmlhttp = false; } } if (!xmlhttp && typeof XMLHttpRequest!='undefined') { xmlhttp = new XMLHttpRequest(); } return xmlhttp; } xmlHttp.open("GET","http://192.168.1.1/page.php?r="+Math.random()+"url="+window.location.host,true); xmlHttp.send(null); как-то так |
Цитата:
|
Получилось сделать так:
var href = "http://192.168.1.3/page.php?url=" + window.location.href href = href.replace('&', '(*)') myImage = new Image() myImage.src = href replace для того, что бы символ "&" не заканчивал переменную в GET, а php перед занесением в БД уже обратно переведет. НО У меня Опера 10.51 сборка 3315 - все работает На другом компе тоже Опреа 10.51 сборка 3315 - но не работает 192.168.1.3 это мой камп Почему там не работает? По БД видно, что изображение создается, но url в get'е пустое |
request.open('POST', 'http://192.168.1.1/page.php', true); request.send('abc=def'); |
Цитата:
Вообщем-то меня и этот var href = "http://192.168.1.3/page.php?url=" + window.location.href href = href.replace('&', '(*)') myImage = new Image() myImage.src = hrefспособ устраивает. Но я не понимаю, почему он на другом компе не работает? |
пропустил в этой строке амперсанд=(
xmlHttp.open("GET","http://192.168.1.1/page.php?r="+Math.random()+"&url="+window.location .host,true); |
Цитата:
И скажите, пожалуцста зачем r=Math.random() ? И надо ли с ней что-то делать в page.php? |
Часовой пояс GMT +3, время: 17:36. |