Помогите со скриптом передачи Post значения через Javascript

Статус
В этой теме нельзя размещать новые ответы.

DCRM

Постоялец
Регистрация
28 Июн 2007
Сообщения
53
Реакции
41
Ситуация такая... вроде скрипт простой) НО...
Нужно сделать что запрос передавался в качестве POST и начался переход на страницу...
Реализовал как бы "GET" с помощью функции:

PHP:
function doClick(url) 
{
location.href = "index.php?x=" + url.id;
}

Этот id являестся именем для "инклудинга", за это отвечает переменная x... но это никуда не годиться, как мне оформить это в качестве POST, ведь переменной x можно передать и через POST значение id... очень надо...

И ещё вопрос, как одновременно передать POST и GET параметры...
 
Если хочешь POST, тебе не обойтись без XMLHttpRequest(); бъекта
PHP:
var http = new XMLHttpRequest();
// Куда постим?
var url = "get_data.php";
// Как собрать праметры думаю понятно?
var params = "lorem=ipsum&name=binny";
// Указываем метод ПОСТ
http.open("POST", url, true);
// Выставляем нужные хедеры
http.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
http.setRequestHeader("Content-length", params.length);
http.setRequestHeader("Connection", "close");
//Создаем ф-цию которая будет вызывать  по окончанию запроса
http.onreadystatechange = function() {
        // Запрос завершен (4) и страница отдалась (200)
	if(http.readyState == 4 && http.status == 200) {
		alert(http.responseText);
	}
}
// Запускаем!
http.send(params);
А так же, очень советую либу Prototype - она много черной работы делает. В твоем случае подошел бы Для просмотра ссылки Войди или Зарегистрируйся
А вот пару статей на русском как либу юзать:
Для просмотра ссылки Войди или Зарегистрируйся
Для просмотра ссылки Войди или Зарегистрируйся
 
Одновременно отправлять GET и POST возможно, к примеру так:

<form action=?id_get=1 method=POST>
<input type=hidden name=id_post value=1>
</form>


Таким образом получим переменные:

$_POST['id_post']
и
$_GET['id_get']

Чтобы отправить POST данные из Java Script нужно сформировать Header. А на кой тебе это нужно???
 
  • Нравится
Реакции: DCRM
о... спасиба! буду пробовать..
Это надо что бы спрятать из адресной строки всё.. ну или частично всё, например спрятать:
xxx.ru/index.php?x=main
НО блин... некоторые инклудинги требуют прямого обращения к index.php..
А есть ли возможность добиться этого: xxx.ru/

P.s как разберусь с мускулом у себя на хостинге, то дам прямой линк на действующий образец)))
 
Код:
<form name=f1 action="script.php?id=18" method=post>
<input type=hidden name=param value=0>
</form>
<script>
function post_smth(prm){
document.f1.param.value=prm;
document.f1.submit();
}
</script>
<a href="javascript:post_smth(15)">йа сцылко</a>

ЗЫ может где-то орфографически ошибся, но надеюсь что ход мысли понятен
 
  • Нравится
Реакции: HeeL
Да, крутая идея, я уловил)) псиб
 
  • Заблокирован
  • #7
еще круче с помощью Для просмотра ссылки Войди или Зарегистрируйся:

Код:
   $.post( "index.php", 
   { 
      x: "main",
      id: review_id
    }, 
   function( response )
   {
     $("#article_text").html( response );
   } );

но сама задача поствлена немного неверно
Это надо что бы спрятать из адресной строки всё.. ну или частично всё, например спрятать

во-первых, для поисковика такая страничка просто не будет работать, он так и будет тупо открывать xxx.ru/

во-вторых, кому надо, все равно легко увидят куда и какой уходит POSt-запрос. Так что задумайтесь, стоит ли овчинка пляски с бубном.
 
  • Нравится
Реакции: DCRM
опа.. это уже интереснее!
1. Мне и надо что бы поисковик обламывался да и те кому это надо могли сделать то что им нужно! :) На то и расчитываю)
На счёт Java
Код:
function doClick(xx) { 
linker = index.php;
var http = new XMLHttpRequest(); 
var url = linker; 
var params = "x=" + xx.id;
http.open("POST", url, true); 
http.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); 
http.setRequestHeader("Content-length", params.length); 
http.setRequestHeader("Connection", "close"); 
http.onreadystatechange = function() { 
    if(http.readyState == 4 && http.status == 200) { 
     document.write(http.responseText);
    } 
} 
http.send(params);}
сие 1й раз он обновляет... но... коряво в смысле кодировки(Русский текст), что делает невозможным дальнейшее "общение" с сайтом:
в Опере ромбики за место Русского текста
в ИЕ 7 Он вообще хз откуда куски кода грузит и русский текст вообще не выводит! :nezn:
И! после того как обновил следующий клик тупо дописывает после.. а как заново???
пипец... реально надо полностью формировать запрос... как же там кодировку указать... блин)
Читаю спецификацию...:bc:
Мдя... не густо...
Нашёл некую ф-ю: Для просмотра ссылки Войди или Зарегистрируйся... думаю...
Помогите с ней разобраться пожалуйста... может на ней запрос сформировать??

Нашёл ещё либу:
Для просмотра ссылки Войди или Зарегистрируйся но она на php... а надо на яве(

Вот ещё Для просмотра ссылки Войди или Зарегистрируйся но уже мозги жгут! хелп..
 
  • Заблокирован
  • #9
я чего-то уже перестал понимать задачу:
Нужно сделать что запрос передавался в качестве POST и начался переход на страницу...
при чем же тогда дальнейшее "общение" с сайтом, куски текста и т.д.?

чтобы дописывало не после, вместо document.write(http.responseText);
пишем что-то другое. типа
document.getElementById('result_div').innerHTML = http.responseText;

вообще надо почитать литературу на тему "веб-приложения с применением технологии AJAX".
 
  • Нравится
Реакции: DCRM
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху