0

単一ページのWebアプリを開発するときに問題が発生します。

jQueryがjsonをHTTPPOSTアクションに送信する場合:

$('#user_dialog .create').click(function () {
                            var user = getInfoUser();
                            $.ajax({
                                url: '@Url.Action("Create", "User")',
                                async: false,
                                type: 'POST',
                                data: JSON.stringify(user),
                                datatype: 'json',
                                contentType: 'application/json;charset=utf-8',
                                success: function (data) {
                                    $('#user_dialog').dialog("close");
                                }
                            });
                        });

コントローラのHTTPPOSTアクションがリクエストを処理します

[HttpPost]
  public String Create(UserAddViewModel model)
        {
            try
            {
                // TODO: Add insert logic here

                return JsonConvert.SerializeObject(true);
            }
            catch
            {
                return JsonConvert.SerializeObject(false);
            }
        }

そして、私のjQuery成功コールバック関数が起動され、データ「true」が受信されます。

しかし、問題はこの後です。ページは/ User /Createviewページにリダイレクトされます

ページにリダイレクトしたくないので、jQueryコードでUIを処理したいだけです。

それはHTTPPOSTアクションだからですか?

実際の理由とそれを修正する方法は何ですか?

4

1 に答える 1

4

おそらく、クリックしているのはURLです。クリックイベントでデフォルトのイベント(URLの読み込み)が発生するのを妨げていません

$('#user_dialog .create').click(function (event) {
    event.preventDefault();
    //rest of function

クリックイベントが終了するたびに、デフォルトのイベント(リンクの場合はURLの読み込み、送信ボタンの場合はフォームの送信、チェックボックスの切り替えなど)が次に発生します。これを防ぐには、falseを使用するpreventDefault()か、falseを返すことによって明示的に行う必要があります。ドキュメントについては、http://api.jquery.com/event.preventDefault/を参照してください。

于 2012-05-11T03:49:15.330 に答える