0

.NET (Web フォーム) で Facebox を使用するのは苦痛です。この主に HTML のサイトは、他の誰かによって設計されました。IIS (7.5) の問題もあるかもしれません。この Facebox ポップアップは別のファイル login.html にあり、index.html から呼び出されます。

$k('a[rel*=example_2]').facebox_1({
  loading_image : '/images/loading.gif',
  close_image   : '/images/closelabel.gif'
});

そしてそれを開くためのリンク

<a href="login.html" title="Log In" rel="example_2" id='login'>Log In </a>

ユーザー名とパスワードを入力して送信するフォーム (login.html):

<form name="login" method="post" action="#" onsubmit="return false;">

検証後 (これは機能しています)、login.aspx (login.html) に投稿します。

$('form[name="login"]').submit(function () {
    var $loginForm = $('form[name="login"]');
    if ($loginForm.valid()) {
        $.post("Login.aspx", $(this).serialize());
    } else {
        $loginForm.validate();
    }
});

フォーム投稿。login.aspx の Page_Load メソッドで、Visual Studio でデバッグできます。Page_Load メソッドの最後の行は次のとおりです。

Response.Redirect("welcomepage.html");

ただし、Facebox ポップアップは残ります。Firebug は投稿を表示し、login.aspx の Page_Load メソッドにヒットし、Facebox ポップアップはどこにも行きません。しかし、 Firebug は、XHR リクエストの [Response] タブで、welcomepage.html が 2 回レンダリングされることを示しています (えっ? なぜ XHR ですか?)。$.post は通常のポストバックを行うと思いました。そして、私のブラウザが実際にリダイレクトしないのはなぜですか。

試行された修正

login.html のフォームを に変更するとaction='login.aspx'、405.0 エラー method not allowed が表示されます (ただし、index.html に投稿しようとしていますね? )。また、Windows 7 上の IIS 7.5 でこれを修正する方法がわかりません。Visual Studio、IIS にローカルにデプロイするときにこのエラーが発生します。スクリプト マッピング、ハンドラー、または から投稿しているという事実に関係している可能性があると読んだことがありますが、十分な修正が見つかりません。ここに何かアイデアはありますか?Facebox のリダイレクトが分かれば、この修正は必要ないかもしれません。

4

1 に答える 1

1

XmlHttpRequests は透過的に redirect に従います。これ$.post()、行われた AJAX 呼び出しが リダイレクトされ、それに従っていることを意味します...実際の親ページではありません。

$.post()は通常のポストバックを実行せ、 AJAXPOSTを実行します。これがおそらく混乱の原因です<form>。通常のページ変更ポストバックを実行する場合は、標準を使用する必要があります。

于 2010-10-05T16:10:31.677 に答える