Как да изпратите заявка чрез POST метод, без да използвате формуляр и получите
Как да изпратите заявка чрез метода POST без да използвате формуляр и да получите резултата (с минималния брой използвани модули)?
Отговорено: 24
какво ще кажете за AJAX?
Доколкото става ясно от въпроса, човекът от браузъра трябва да изпрати данни чрез POST, без да използва формата.
доколкото става ясно от въпроса, човек трябва да изпрати заявка с перла (иначе защо да пита тук).
След това контра въпрос: как да изпратите последваща заявкачрез формулярс Perl
защо го прави през задника?
advAjax 20/09/2006 23:08
advAjax.post( име на поле: getElementByid('field_id'), . >);
Re: advAjax 20/09/2006 23:17
Аааа, и ти ли използваш advAjax? Най-неизискващата, лека и проста рамка!
И ако трябва да изпратите нещо изпод перлата, тогава мисля, че LWP
Re: advAjax 20/09/2006 23:55
работи само с уникод?
използвайте URI::URL; използвайте HTTP::Заявка; използване на LWP::UserAgent; използване на CGI qw(заглавие);
my $query = $uri->query; (my $url = $uri->as_string) =
s/\\?$заявка$//; my $request = new HTTP::Request("POST", $url); $request->header('Content-Type' => 'application/x-www-form-urlencoded'); $request->content($query);
$request->header(Host => $uri->host_port) if $uri->scheme ne 'file';
my $res = LWP::UserAgent->new->request($request);
заглавка за печат, $res->is_success? $res->съдържание: $res->статус_ред;
може би възможно най-скоро?
по-рано как? не изпрати заявка?
неизползване на три модула - поне един
useURI::URL; използвайте HTTP::Заявка; използване на LWP::UserAgent;
И каква е причината за такъв аскетизъм?
И вие сте измерили скоростта, за да кажете тованяколко модула не е продуктивно?
Как как. Прочетете стандарта HTTP / 1.1, направете заявка с ръцете си (сглобете от линии), отворете гнездо. Можете изобщо да правите без модули.
нещо подобно: $params = "fldname1=".$fldval1."&"."fldname2=".$fldval2."&".etc. ; $length = strlen($params); $string = "POST /path/to/script.php HTTP/1.0\n". "Тип съдържание: приложение/x-www-form-urlencoded\n". "Дължина на съдържанието: $length\n". "ХОСТ:$host_where_to_send\n\n". "$params\n";
$fp = @fsockopen("$host_where_to_send", $port, $errno, $errstr, 30); if (!$fp) echo "$errstr ($errno) \n";
@fputs($fp, $string); while (!@feof($fp)) $response .= @fgets($fp, 128); >
@fclose($fp); > ехо $отговор;
Опа, в грешната общност :) Въпреки че по принцип разликата не е голяма, пренаписах този скрипт от Perl на PHP, работи по същия начин.
Net::HTTP 21/09/2006 08:53
използвайте Net::HTTP; my $s = Net::HTTP->new(Host => "host.com") die $@; $s->write_request(POST => "/page.php", 'User-Agent' => "Mozilla/5.0", "parametr=value"); my($code, $mess, %h) = $s->read_response_headers;
докато (1) моя $buf; my $n = $s->read_entity_body($buf, 1024); die "неуспешно четене: $!" освен ако не е дефинирано $n; последен освен $n; печат $buf; >
Re: Net::HTTP 22/09/2006 22:15
преди да съветвате, опитайте сами това, което пишете