[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: http://ushi.donburi.net/mt/mt-tb.cgi/69



はじめまして。
このページのコードに原因があるかわからないのですが、hiddenの値が送られないままページ遷移することがあります。
毎回できないわけでもありません。
確実にPOSTされたか確認してページ遷移するなどできるでしょうか?
自己解決しました。
form.SetAttribute("action", "result.php");
で絶対パスを指定していて「www」がある場合と無い場合が混在していて問題になったようです。
コメントありがとうございました。
クロスドメイン間のhiddenパラメータの引渡しに起因する問題だったということなのでしょうか?
いずれにしても無事に解決なさったようでホッとしました。