我有一个ASP.Net网络应用程序,在客户端实现了jquery。客户端jquery脚本在服务器端代码中对Web方法进行异步调用。该调用返回jquery用于更新用户的状态打开记录(活动/非活动)。目标是让jquery重复调用服务器,一旦打开记录处于非活动状态,那么我们需要向用户显示消息,以便您不再与此记录关联。我将TimeInterval设置在一个关闭< strong> HiddenFieldValues 并传递给Jquery / ajax函数。
此函数在单独的JavaScript文件中编写,并在我的ASPX页面脚本管理器中引用。我必须通过&#39; interval&#39;从服务器端,在.config文件中配置。
function myWebServiceFunction(val1, val2, val3, interval) {
$.ajax({
type: "POST",
url: "/Application/WebServices/MyService.asmx/CheckFunction",
data: "{'val1':'" + val1 + "','val2':'" + val2 + "','val3':'" + val3 + "'}",
contentType: "application/json; charset=utf-8",
dataType: "json",
async: true,
success: function (msg) {
debugger;
var obj = function callbackfunction() {
myWebServiceFunction(HealthCarrierShortName, authID, networkID, interval)
}
if (!msg.d) {
window.setTimeout(obj, interval);
}
else {
// Still need to implement how to display to user if the record is not long associated to that user. help me in this too
}
},
error: function (xhr, ajaxOptions, thrownError) {
alert('AJAX failure');
}
});
}
在我的服务器端,我在Page_load方法结束时使用 RegisterStartUpScript 并调用该JQuery函数
ScriptManager.RegisterStartupScript(Me.Page, Page.GetType(), "AuthLockPolling", " myWebServiceFunction('" + val1HiddenField.Value + "','" + val2HiddenField.Value + "','" + val3HiddenField.value+ "','" + val4HiddenField.value+ ");", True)
但它不能正常工作(不完全知道原因)。我的Jquery函数根本没有被调用。我通过将调试器放入我的脚本进行测试并且没有被命中。
如果该记录与该用户的关联时间不长,仍需要实现如何向用户显示消息,如警报窗口/弹出窗口中所示。请帮我这一部分。
请告诉我错误的原因以及如何解决这个问题。在此先感谢!
答案 0 :(得分:1)
如何解决这个问题:
RegisterStartupScript
可能令人困惑(问我怎么知道!)。您是否在使用部分页面更新的页面上使用此功能(即,具有UpdatePanel
控件)?如果没有,您应该使用ClientScriptManager
(而不是ScriptManager
)类中的方法。
如果它在具有部分页面更新的页面上用于内部 UpdatePanel的控件,则第一个参数应该是UpdatePanel
内的控件,而不是而不是Page
。
调试提示:通过传递简单的JavaScript代码进行测试,例如alert('Hello, World!');
。这可以帮助您判断问题是在RegisterStartupScript调用中还是在myWebServiceFunction函数中。
最后,这里是Microsoft文档:https://msdn.microsoft.com/en-us/library/bb310408(v=vs.110).aspx。因为在不同的类中有相同名称的方法,请阅读verwy,verwy,carefulwee文档。