2

目标:

将我的 $.post 更改为 $.ajax 以同步它并显示消息,直到请求完成。

我想确切地知道如何使用 ajax 请求来做到这一点,我的大问题是当我尝试替换 div 内容时,就像我在这里使用 $.post 所做的那样

编码:

风景

 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 回答