gpt4 book ai didi

c# - 如何从 jQuery AJAX 调用向 UI 反馈代码隐藏进程的当前进度

转载 作者:太空宇宙 更新时间:2023-11-03 11:49:53 25 4
gpt4 key购买 nike

我有一个表单将要执行一个失败的长时间运行的进程。不仅长,而且安装过程中有许多小步骤。我尽量避免在我的整个应用程序中使用内置的 MS AJAX,但如果它只是更简单的做事方式,我会在这个页面上使用它。

但我想要的是只有一个 jQuery AJAX 调用代码隐藏并且代码隐藏在它到达每个步骤时吐出进程。这是我到目前为止得到的。这只是示例代码,但这是我想要做的。

用户界面:

<head runat="server">
<title></title>
<script type="text/javascript">
$(function() {
$(this).find("#submitForm").click(function() {
RunCodeBehind();
});
});

function RunCodeBehind() {
$.ajax({
error: function(msg) { alert(msg) },
type: "POST",
url: 'Other.aspx/RunLongRunningProcess',
data: "{}",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function(responses) {
if (responses.d != "") {
//Display process in UI
var divEvents = document.getElementById("events");
divEvents.innerText = divEvents.innerText + "\n" + data;
}
else {
//no response, update as failed
var divEvents = document.getElementById("events");
divEvents.innerText = divEvents.innerText + "No response from code behind";
}
}
});
}

</script>
</head>
<body>
<form id="form1" runat="server">
<div>
<a id="submitForm">Start Process</a>
<br />
<div id="events"></div>
</div>
</form>
</body>

代码隐藏:

[WebMethod]
public static string RunLongRunningProcess()
{
string returnValue;
var sqlQuery = "SELECT COUNT(*) FROM Users;"; //generic sql query
returnValue = ExecuteQuery(sqlQuery);

//feedback cout total to UI, continue process

var sqlQueryInsert = @"INSERT INTO Log (UserCount)
SELECT COUNT(*) FROM Users;"; //generic sql insert
returnValue = ExecuteNonQuery(sqlQueryInsert);
//feedback insert step to UI
var sqlQuery = "SELECT user + ' - ' + name + ' - ' + favday FROM Users;"; //generic sql query
returnValue = ExecuteQuery(sqlQuery);
//feedback selection to UI

return returnValue;
}

关于如何通过一次调用使其多次反馈到 UI 的任何指示?

最佳答案

我倾向于尝试相反的方法,而是从您的 JQuery 代码中轮询另一个 Web 服务方法。

在您的“RunLongRunningProcess”方法中,我将简单地使用 0 到 100 之间的值更新 session 整数变量。

然后我将创建一个单独的 Web 服务方法来返回此变量的当前值。

然后您可以每隔一秒(例如)轮询一次此新方法以获取当前上传状态。

我相信 JQuery 的 PeriodicalUpdater 可以让您实现这一目标:

http://www.360innovate.co.uk/blog/2009/03/periodicalupdater-for-jquery/

关于c# - 如何从 jQuery AJAX 调用向 UI 反馈代码隐藏进程的当前进度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2387259/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com