简单的异步回调替代方案

时间:2013-07-19 17:23:20

标签: c# javascript asynchronous callback postback

我的逻辑需要帮助...

目前:

  1. 用户在页面中输入一些数据。
  2. 用户点击提交。
  3. Javascript将其数据放在隐藏的输入字段中。
  4. 页面进行回发(重新加载)
  5. C#注册这是一个回发并获取隐藏的javascript字段。
  6. C#将其放入数据库。
  7. 以上问题是重新加载网页。我不要那个。我已经使用了一个无法正常工作的回调脚本(我在试图调试时有另一个问题)。

    我的问题是如何在没有回调或回发的情况下完成上述步骤的替代方案?有没有办法简单地从客户端功能按需调用服务器端功能? (我知道回调应该做到这一点,但是我的工作不起作用)

    如果没有这样的替代方案,为什么回调是如此复杂(从新手的角度来看)?为什么我不能简单地调用回调,如:

    if (IsCallBack)
            {
                string test = Request.Form["saveTest"];
                //do stuff
            }
    

    谢谢。另外,如果没有先批评我,请不要“关闭”或标记我的问题。感谢。

1 个答案:

答案 0 :(得分:1)

这是我能想到的最简单的例子,它使用Ajax和ASP.Net。

  • 使用JQuery,因为它简化了发出Ajax请求
  • 不使用ASP.Net AJAX,因为它在核心技术之上添加了抽象,这不是开始学习的好方法

首先,UserInput.aspx

<html>
    <input type='text' id='SomeUserInput' />
    <input type='submit' value='submit' id='SubmitButton' />

    <script src='http://code.jquery.com/jquery-1.10.2.js'></script>
    <script>  
        // wait for the document to load
        $(document).ready(function() {

            // handle the button click
            $("#SubmitButton").on("click", function(e) {

                // stop the page from submitting, so we can make the Ajax call
                e.preventDefault();

                // retrieve the user input
                var userInput = $("#SomeUserInput").val();

                // make the Ajax request
                $.post("AjaxHandler.aspx", { saveText: userInput }, function(response) {

                    // handle response from the server
                    alert("Request is complete.  Result: " + response);
                });
            });
        });
    </script>
</html>

其次,AjaxHandler.aspx

<%@ Page Language="C#" %>

<%
    string userInput = Request.Params["saveText"];

    // use the input here

    Response.Write("done, maybe?");
%>