2012-12-17 22 views
2

的目的:

更改我的$。員額到$就以syncronize它,直到要求完成顯示的消息。

我想知道我究竟是如何能做到這一點有一個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, 

     }); 
    } 

回答

1

你需要保持它async = false?

您可以使用$.load()來代替div內容而不是使用$.post。例如:

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

有了一個回調函數:

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

注意MessageNewVersionSucced將僅在Ajax調用完成 '/ Valoration/NEWVERSION' 後執行。

+0

是的,我需要async = false – user1520494

+0

@ user1520494得到它,只是好奇,是什麼原因? – Ulises

+0

你好Ulises! ty爲您的響應,我需要Async = false,因爲我不想在$ .post完成之前顯示MessageNewVersionSucced() – user1520494

0

你說

更改我的$。員額到$就以syncronize它...

我不知道,如果你正在使用jQuery 1.8,但是jQuery的網站指出

從jQuery 1.8開始,對jqXHR($ .Deferred)使用async:false爲 棄用;您必須使用完整/成功/錯誤回調。

您的請求將不會同步執行。這可能是你的問題的根源。