目标:
将$ .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,
});
}
答案 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) 弃用;您必须使用完整/成功/错误回调。
您的请求不会同步执行。这可能是你问题的根源。