0

Facebox jqueryボックスを使用して、送信ボタンとキャンセルボタンを備えた小さなフォームをロードしています。

[送信]をクリックすると、FaceboxウィンドウではなくFaceboxウィンドウをロードしたメインページが閉じます。AddNote.aspxサイト(Faceboxによってロードされる)を開いたままにして、Main.aspxを閉じます。

AddNote.aspxの背後にある私のコードは次のとおりです(これはMain.aspxのFaceboxポップアップによってレンダリングされます):

    protected void SubmitButtom_Click(object sender, EventArgs e)
    {

        string note = NotesTextBox.Text;

        //will need to add current user

        using (cmd = new SqlCommand("INSERT INTO notes (FID, note_date, note_text) VALUES (@FID, @note_date, @note_text)", con))
        {
            con.Open();
            cmd.Parameters.Add(new SqlParameter("FID", FID));
            cmd.Parameters.Add(new SqlParameter("note_date", DateTime.Now.ToString()));
            cmd.Parameters.Add(new SqlParameter("note_text", note));
            cmd.ExecuteNonQuery();
            con.Close();
            Page.ClientScript.RegisterOnSubmitStatement(typeof(Page), "closeModal", "$.facebox.close();");              //WHY DOES THIS CLOSE MAIN.ASPX INSTEAD OF FACEBOX WINDOW?                  
        }           

    }
4

1 に答える 1

0

ASP.NET へようこそ

サーバー側コードを使用してこのフォームを処理しています。つまり、ASP.NET が "PostBack" と呼んでいるものを実行する必要があります。これが意味することはform、ページ上の が処理のためにデータを自分自身に送信していることです。「送信」ボタンがそれをトリガーしたボタンであるため、ハンドラーが呼び出されます。

ここで重要なことは、これにはサーバーへのトリップが必要だということです。フォームが送信されます。これは、通常の HTTP (したがって、ASP.NET では HTTP 処理用に構築されたフレームワークであるため) では、ページの更新を意味します。ブラウザーは、「おお! フォームが送信されています! サーバーにリクエストを送信し、応答を待つ時間です。おそらく、今持っているページをアンロードできます。」と表示されます。そうです。

必要なことを行うには、「AJAX」または非同期 XMLHttpRequest を調べます。それらは同じものですが、一方がより流行語になっています。

于 2012-10-15T17:01:20.147 に答える