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

■質問
通常IEオブジェクトを使ってフォームにセットされたデータを
サブミットするには、
IE.Document.forms("").elements("").value = ""
IE.Document.forms("").submit()
と行うと思うのですが。

例えば下記のようなフォームを送信する際、
フォームのある"http://test.com/login_form"
ページにわざわざ移動せず
直接"http://test.com/action"
"hidden"のエリアに対してデータを送信
する方法を教えて頂けませんでしょうか?

また、Form1に複数のエレメントが存在する場合
全てのエレメントの値を送らないと正しく処理
できないでしょうか?

■"http://test.com/login_form" のHTML
<form name="Form1" method="post" action="/action">
<input type="hidden" name="ID" value="1234">
<input type="submit">
</form>

A 回答 (2件)

質問1:「"hidden"のエリアに対してデータを送信する方法」


回答1:「IE.Document.forms("").elements("").value = ""」

html上の表現が何かは関係ありません。
textでもtextareaでもhiddenでもcheckboxでもselectでも同じです。
methodをpostで送るかgetで送るかは重要です。
httpsの場合は基本的に無理だと思ったほうがいいと思います。
また、遷移元ページやクッキーをチェックしている場合もあるので注意してください。


質問2:「全てのエレメントの値を送らないと正しく処理できないでしょうか」
回答2:そういう場合もあります。それはサイトの仕組みによります。
 すべて必要なことのほうが多いと思います。submitボタンの値も送信されますが
 これはチェックしていないことが多いです。
 ボタンが複数ある場合などには逆にチェックして処理する場合があります。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
不明な点があり、追加質問させてください。
postで送るかgetは、IEオブジェクトから行えるのでしょうか?


※もし、TCP/IPなどの階層でのプログラミングでしたら、
 今回は諸事情から、今回避けたいと思っていますので
 VBSのIEオブジェクト操作でお願いできませんでしょうか?
 

お礼日時:2009/04/28 19:09

>postで送るかgetは、IEオブジェクトから行えるのでしょうか?



そうです。


>もし、TCP/IPなどの階層でのプログラミングでしたら、

違います。


もし、さらに追加で質問がある場合には
ソースコードの全文を提示してください。
    • good
    • 0
この回答へのお礼

■お詫び
返事が遅くなり申し訳ありません。

質問を出した後に解ったのですが、"hidden"に関しては私の勘違いが
有りました。
そのせいで、変な質問になり申し訳ありませんでした。
POST先のCGIに"hidden"エリアがあり、そこにデータを送信するのだ
と思い込んでいましたが、単なるブラウザ上で目に見えないINPUT部品だった訳ですね。

■お礼
有益な情報ありがとうございました。
>postで送るかgetは、IEオブジェクトから行えるのでしょうか?
はい
この回答だけでも、大変感謝しております。

頂いたお答えをヒントに調べてみたら下記のように
InternetExplorer.ApplicationのNavigate2で
第4引数に POST で送りたいデータを指定できると言う事が
解りました。その事でよろしいのですよね。
もしかして別の方法でしたでしょうか?

■ソースコード
Set IE = WScript.CreateObjec("InternetExplorer.Application")
IE.Visible = True
IE.Navigate "URL"

Do While IE.busy
 WScript.Sleep 100
Loop

IE.Document.forms("FORM1").elements("名前").value = "値"
WScript.Sleep 500
IE.Document.forms("FORM1").submit()

■"​http://test.com/testform"​ のHTMLソース
<form name="Form1" method="post" action="/action">
<input type="text" name="名前">
<input type="hidden" name="ID" value="1234">
<input type="submit">
</form>


これなら、POST使わなくても良いじゃないかと思われるかも
しれませんが、このフォームがあるページより、
相当回数の値を変えたデータ送信が必要な場合、
サブミットで新しいページに移行してはまたフォームのページに
戻っては処理を繰り返すのでは時間が掛かります。
そこで、移動先のCGIに直接データをPOSTしたかった訳です。
そうすれば、フォームのあるページに移動する手間が省けるのでは
ないかと思ったのです。
まだ、時間が取れず、テストできていませんのでそのような感じに
出来るのか不明ですが。 お世話になりました。

お礼日時:2009/05/12 06:49

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