我想在执行webmethod的ajax命令之前显示一个加载div,在命令结束时关闭。 div仅在ajax命令执行结束时出现。
以下代码块。
$("#dvUpProgress1").show();
$.ajax({
type: "Post",
url: "producao.aspx/GravarListaSalvar",
data: "",
contentType: "application/json; charset=utf-8",
dataType: "json",
async: false,
success: function (obj) { }
});
在后面的代码中:
[WebMethod]
public static string GravarListaSalvar(string IdAutorizacaoProducaoGarantiaQualidade, string IdEtapa, string IdSubEtapa, string IdUsuarioLogado, string NomeCampo, string NomeAmigavel, string Resposta, string IdCampo)
{
...
}
答案 0 :(得分:0)
您已通过async: false
将POST请求设置为同步。在脚本完成运行之前,浏览器不会渲染内容 - 这只会在您的帖子完成后才会发生。
如果要显示进度条,则需要异步实现调用,以便浏览器在服务器处理请求时呈现加载div。在当前例程中调用完成后,您将转到已创建的success
函数。你的javascript应该像这样更新:
$("#dvUpProgress1").show();
$.ajax({
type: "Post",
url: "producao.aspx/GravarListaSalvar",
data: "",
contentType: "application/json; charset=utf-8",
dataType: "json",
async: true,
success: function (obj) {
// Here is where the rest of your code should go
}
});
您会注意到我将async
更改为true
,告诉浏览器异步处理调用,释放浏览器以呈现进度条。
如果您绝对必须同步拨打电话,您可以通过执行此类操作来实施setTimeout
$("#dvUpProgress1").show();
setTimeout(function () {
$.ajax({
type: "Post",
url: "producao.aspx/GravarListaSalvar",
data: "",
contentType: "application/json; charset=utf-8",
dataType: "json",
async: false,
success: function (obj) {
// Here is where the rest of your code should go
}
});
}, 100);
..但是你真的失去了AJAX开发的异步处理的所有好处(毕竟,AJAX代表异步JS和XML)。所以我真的,真的会建议 AGAINST 进行同步通话。