触发C#方法的Javascript事件处理程序
我一直在开发的.NET应用程序正在挂起某个函数调用。我想知道是否有一种方法可以让事件处理程序“触发”C#函数,而不是调用它并等待返回;换句话说,我需要它继续运行Javascript代码,而不是等待。如何实现此功能 以下是代码概要: Javascript触发C#方法的Javascript事件处理程序,javascript,c#,asp.net,Javascript,C#,Asp.net,我一直在开发的.NET应用程序正在挂起某个函数调用。我想知道是否有一种方法可以让事件处理程序“触发”C#函数,而不是调用它并等待返回;换句话说,我需要它继续运行Javascript代码,而不是等待。如何实现此功能 以下是代码概要: Javascript // Fires on user scroll event function ScrollHandler() { //... // Calls the following C# function when a user scrol
// Fires on user scroll event
function ScrollHandler() {
//...
// Calls the following C# function when a user scrolls
window.external.UserScroll();
}
// Called by C# function UpLoadJson()
function drawTimeline(JsonData) {
//...
}
C#
使用“->
”表示函数调用,我认为正在发生的是:
ScrollHandler(/*JS*/)->UserScroll(/*C*/)->UpLoadJson(/*C*/)->drawTimeline(/*JS*/)
但是Javascript无法运行drawTimeline()
,因为它正在等待ScrollHandler()
首先返回;但在调用drawTimeline()
之前无法返回。我需要ScrollHandler()
返回,而不需要等待UserScroll()
返回
@fabjan代码:
$(document).ready(function() {
$.ajax({
url: window.external.HandleScroll(left, right),
type: "GET"
})
// seems like this part would be optional, since calling HandleScroll() will
// result in the draw function if it needs to
/*.done(function (jsondata) {
drawTimeline(jsondata);
})*/
.fail(function (err) {
alert(err.statusText);
});
});
尝试使用jQuery Ajax获取/发布请求和回调方法:
$.ajax({
url: (your controller/actionname),
type: "GET",
}).done(function (jsondata) {
some code here...
}).fail(function (err) {
alert(err.statusText);
});
尝试使用jQuery Ajax获取/发布请求和回调方法:
$.ajax({
url: (your controller/actionname),
type: "GET",
}).done(function (jsondata) {
some code here...
}).fail(function (err) {
alert(err.statusText);
});
没用。应用程序仍然会因为这个调用而自食其果。如果您在不同的线程中执行UpLoadJson方法而不是使用ajax呢?尝试将此行添加到UserScroll方法-Task.Factory.StartNew(UpLoadJson.Start();VisualStudio对这行代码一点也不满意。如何使用此
StartNew()
函数传递UpLoadJson
的参数?Javascript代码在单线程中运行,当您同步调用服务器端的方法时,它会阻塞线程。你有两个选择:1。在没有json结果的情况下从服务器获取快速响应,并在准备就绪后再次调用以获取此结果。2.使用ajax并异步加载结果我想你刚才帮我弄明白了。我可以在UserScroll方法中返回Json,但它不起作用。应用程序仍然会因为这个调用而自食其果。如果您在不同的线程中执行UpLoadJson方法而不是使用ajax呢?尝试将此行添加到UserScroll方法-Task.Factory.StartNew(UpLoadJson.Start();VisualStudio对这行代码一点也不满意。如何使用此StartNew()
函数传递UpLoadJson
的参数?Javascript代码在单线程中运行,当您同步调用服务器端的方法时,它会阻塞线程。你有两个选择:1。在没有json结果的情况下从服务器获取快速响应,并在准备就绪后再次调用以获取此结果。2.使用ajax并异步加载结果我想你刚才帮我弄明白了。我可以在UserScroll方法中返回Json,但它不起作用。应用程序仍然会因为这个调用而自食其果。如果您在不同的线程中执行UpLoadJson方法而不是使用ajax呢?尝试将此行添加到UserScroll方法-Task.Factory.StartNew(UpLoadJson.Start();VisualStudio对这行代码一点也不满意。如何使用此StartNew()
函数传递UpLoadJson
的参数?Javascript代码在单线程中运行,当您同步调用服务器端的方法时,它会阻塞线程。你有两个选择:1。在没有json结果的情况下从服务器获取快速响应,并在准备就绪后再次调用以获取此结果。2.使用ajax并异步加载结果我想你刚才帮我弄明白了。我可以在UserScroll方法中返回Json