如何用$ .ajax替换div内容,如$ .post

时间:2012-12-17 12:05:25

标签: c# jquery json asp.net-mvc-3

目标:

将$ .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,

        });
    }

2 个答案:

答案 0 :(得分:1)

你需要保持async = false吗?

您可以使用$.load()替换div内容,而不是使用$.post。例如:

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

使用回调函数:

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

注意MessageNewVersionSucced仅在ajax调用' / Valoration / NewVersion'之后执行。完成。

答案 1 :(得分:0)

你说

  

将$ .post更改为$ .ajax以便同步它...

我不确定您是否使用jQuery 1.8,但jQuery网站声明

  

从jQuery 1.8开始,使用async:false和jqXHR($ .Deferred)   弃用;您必须使用完整/成功/错误回调。

您的请求不会同步执行。这可能是你问题的根源。