アプリ版:「スタンプのみでお礼する」機能のリリースについて

初めまして。
今回お聞きしたい事は、jsで取得した別フレームの文字列を、URLのパラータに付け、
actionに指定したものをpostで送るというものです。
get送信の場合は文字数制限があるためpostで送りたいです。

frame1:main
frame2:sub
frame1からframe2のcgiへpost送信を行いたいです。

main側でボタンを押した時に、subに表示されているテキストエリアの文字列を取得し、
それをurl+="prm="+prm;の形でurlのパラメータに設定し、document.f1.action=url;
としてpostで送信している。
のですが、prm変数のパラメータの量が多い為、エラーが発生してしまっているみたいです。

例)
//別フレームから値をprmdataに格納
var prmdata = parent.out.document.inform.csvedit.value;

//送信url生成
url += "prm1=" + prmdata;
document.form.taget = sub;
document.form.method = post;
document.form.action = url;

※上記方法でパラメータ自体送信出来るのですが、
prmdataのパラメータの量が多いとエラーとなってしまいます。
そもそもurlにパラメータを付けpost送信することは可能なのでしょうか?

どうにか回避したいと考えています。
どなたかご教授ください。
よろしくお願いします。

A 回答 (2件)

例えば以下のような、hiddenのフォームを用意しておいて、


<form action="xxx.cgi" method="post" name="test" target="sub">
<input type="hidden" name="prm1" value="">
</form>

var f = document.forms['test'];
f.elements['prm1'].value = prmdata;
f.submit();
みたいにしてあげれば簡単では?

フォームをどちらのソースに作成しておくかによって、若干内容が変わってくると思いますが、要領は同じ。


ついでに…
全体像が不明なのでわからないけれど、
>url += "prm1=" + prmdata; は
url += "?prm1=" + prmdata; では?
また、データの内容によってはエンコードが必要では?
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
無事作成することができました。
隠しパラメータとしてhiddenのを作成し、そこに取得した値をセットしpost送信することで解決しました。

本当にありがとうございました。

お礼日時:2009/11/05 11:36

> そもそもurlにパラメータを付けpost送信することは可能なのでしょうか?



出来ます。

URLに付いているパラメータとPOSTで送られてきたデータをどのように扱うかはCGIアプリケーションの作り方次第です。
一般的な作り方では、METHODにPOSTが指定してあれば、URLのパラメータは無視されます。

が、
「URLが長い」というエラーですので、GETとかPOSTとかは関係ありません。
URLに付けるパラメータを調整して、エラーがでない程度の長さにする必要がありそうです。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!