2

目的:

$.post を $.ajax に変更して同期し、リクエストが完了するまでメッセージを表示します。

ajaxリクエストでそれを行う方法を正確に知りたいのですが、私の大きな問題は、ここで $.post を使用して行ったことと同じようにdivコンテンツを置き換えようとするときです

コード:

景色

 function NewVersion() {
     $.ajax({
         url: "/Valoration/NewVersion",
         type: "POST",
         async: false,
         success: function (data, status, xhr) {
             if (data.success) {

                 $.post(data.hvmHeaderPartialView, function (partial) { $('#divHvmHeader').html(partial); });

                 MessageNewVersionSucced();
             }
         },
         error: function (xhr, status, err) {
             alert(err);
         }
     }); 

コントローラー

public ActionResult HvmHeaderPartialView()
    {
        return PartialView("_HvmHeaderPartialView,", DetailHvmModel);
    }    


private ActionResult NewVersion()
    {

    var result = hvmService.addNewVersion(hvm);
        var HvmHeaderPartialView = Url.Action("HvmHeaderPartialView,");


        return Json(new
        {
            success = result,
            hvmHeaderPartialView= HvmHeaderPartialView,

        });
    }
4

2 に答える 2

1

async=false にしておく必要がありますか?

を使用する代わりに、 $.load()を使用して div コンテンツを置き換えることができます$.post。例えば:

$('#divHvmHeader').load('ajax/test.html');

コールバック関数を使用:

$('#divHvmHeader').load('/Valoration/NewVersion', function() {
  MessageNewVersionSucced();
});

: MessageNewVersionSucced'/Valoration/NewVersion' への ajax 呼び出しが完了した後にのみ実行されます。

于 2012-12-17T13:01:03.590 に答える
0

あなたが述べた

同期するために $.post を $.ajax に変更します...

jQuery 1.8を使用しているかどうかはわかりませんが、jQueryサイトには次のように記載されています

jQuery 1.8 以降、jqXHR ($.Deferred) で async: false を使用することは推奨されなくなりました。完全/成功/エラーのコールバックを使用する必要があります。

リクエストは同期的に実行されません。これが問題の根本原因である可能性があります。

于 2012-12-17T12:11:21.330 に答える