[Silverligt2]POSTによるページ遷移

 最近すっかりJQueryにはまっている会長です。
 かつてのブラウザ&OS依存により、JavaScript1.2だかなんだかあたりの某案件以来、極度のJavaScript嫌いに陥っていた僕ですが、必要に迫られて使うことになったJQueryのおかげで、今ではすっかりJavaScriptが楽しくて仕方がありません。
 とりあえず、このブログにも、JQueryだけでも入れちゃっておこうかな。

 というどうでもいい話はさておき、Silverlightコンテンツから、POST送信によるページ遷移を行う必要に迫られ、いろいろ調べてみたのですが、POSTリクエストを送信する方法はたくさん見つかったのですが、ページ遷移となるとなかなか情報が見つからなくて、途方に暮れていました。
 そんな中、ふと思いついて試してみた方法が、予想以上にうまくいってしまいました。
 もしかしたら、他にちゃんとした方法があるのかもしれませんが、同じ疑問を持っている方の参考になればと思い、以下にその方法を記録しておこうと思います。
 もし間違っていたりしたら、親切な誰かが、正しい方法を教えてくれるしね(^^;

 それがどんな方法なのかというと、Silverlightから、DOMにフォームを追加してやって、そのsubmitをキックするという方法です。
 以下のサンプルは、"result.php"に、"a=1"というパラメータをPOST送信するものです。

//(1)以下のタグと同等のHTMLエレメントを作成
//<form method="POST" action="result.php">
HtmlElement form = HtmlPage.Document.CreateElement("form");
form.SetAttribute("method", "POST");
form.SetAttribute("action", "result.php");
//(2)以下のタグと同等のHTMLエレメントを作成
//<input type="hidden" name="a" value="1" />
HtmlElement hidden = HtmlPage.Document.CreateElement("input");
hidden.SetAttribute("type", "hidden");
hidden.SetAttribute("name", "a");
hidden.SetAttribute("value", "1");
//(3)2で作成したhiddenタグを1で作成したformに追加
form.AppendChild(hidden);
//(4)formをSilverlightアプリケーションをホストするHtmlPageに追加
HtmlPage.Document.DocumentElement.AppendChild(form);
//(5)formのsubmitをキック
form.Invoke("submit", null);

トラックバック(0)

このブログ記事を参照しているブログ一覧: [Silverligt2]POSTによるページ遷移

このブログ記事に対するトラックバックURL: https://ushi.donburi.net/mt/mt-tb.cgi/69

コメント(3)

Anonymous :

はじめまして。

このページのコードに原因があるかわからないのですが、hiddenの値が送られないままページ遷移することがあります。

毎回できないわけでもありません。

確実にPOSTされたか確認してページ遷移するなどできるでしょうか?

Anonymous :

自己解決しました。

form.SetAttribute("action", "result.php");
で絶対パスを指定していて「www」がある場合と無い場合が混在していて問題になったようです。

くわ :

コメントありがとうございました。
クロスドメイン間のhiddenパラメータの引渡しに起因する問題だったということなのでしょうか?
いずれにしても無事に解決なさったようでホッとしました。

コメントする

このブログ記事について

このページは、くわが2009年9月21日 00:01に書いたブログ記事です。

ひとつ前のブログ記事は「[Silverlight2]HTMLとXapを異なるサーバに配置する」です。

次のブログ記事は「すき家認定コーンスナック 牛丼味&スパイシーカレー味」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

Powered by Movable Type 7.0.1
ぎゅう♪ぎゅう♪ぎゅう♪ぎゅう♪ ぎゅう♪ぎゅう♪ ぎゅう♪ぎゅう♪