触发C#方法的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

我一直在开发的.NET应用程序正在挂起某个函数调用。我想知道是否有一种方法可以让事件处理程序“触发”C#函数,而不是调用它并等待返回;换句话说,我需要它继续运行Javascript代码,而不是等待。如何实现此功能

以下是代码概要:

Javascript

// 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