【发布时间】:2018-09-04 12:29:44
【问题描述】:
我必须将最大值和百分比值读入 jquery 函数。我尝试在页面加载时将这些值读入隐藏变量和会话变量,它总是返回 0。 这些是我的属性:
public static int Max { get; set; }
public static int Percent { get; set; }
这是我的代码隐藏:
[WebMethod]
public static string Test()
{
var y = 0;
var max = 100000;
Max = max;
for(int i = 0; i < max; i++)
{
y++;
Percent = y++;
}
if (y > max)
return "Success";
else
return "Fail";
}
这是我点击按钮时的 ajax 调用。我正在尝试使用另一个函数读取每个 i 的最大值和百分比值。我不确定如何将这些值调用到另一个函数中。
<asp:Button ID="btnGetData" runat="server" Text="Get Data" />
$(document).ready(function () {
$$('btnGetData').click(function () {
function readValues();
$.ajax({
type: 'POST',
url: 'Test.aspx/Test',
data: "{}",
contentType: "application/json; charset=utf-8",
dataType: "json",
async: true,
success: function (Result) {
alert(Result.d);
},
error: function (Result) {
alert('Error!');
}
});
});
});
function readValues(){
var t = <%= Max%>;
var p = <%= Percent%>; //This has to be updated every few seconds until
//the for loop is finished.
}
【问题讨论】:
-
您的最大和百分比将在页面加载和显示时得到评估。它们不会以您想要的方式动态更新 - 这就是它们为零的原因,因为这是它们的初始值。一种方法是将服务器端的处理移动到一个单独的线程/进程中,并有一个单独的 Ajax 调用来报告前端然后重复调用的进度。
-
/This has to be updated every few seconds until //the for loop is finished.这是不可能的。 C#代码运行在服务器上,JS代码运行在浏览器上。在您的 AJAX“成功”回调中,一旦 C# 代码完全处理完您告诉它的所有内容,您将获得一个结果。这段代码看起来像是一些虚拟/演示代码。这里真正的用例是什么?也许还有另一种方法可以实现您的实际目标。
标签: javascript c# jquery asp.net ajax