【问题标题】:Easy Async Callback Alternative简单的异步回调替代方案
【发布时间】:2013-07-19 17:23:20
【问题描述】:

我的逻辑需要帮助...

目前:

  1. 用户在页面中输入了一些数据。
  2. 用户点击提交。
  3. Javascript 将他们的数据放在一个隐藏的输入字段中。
  4. 页面执行回发(重新加载)
  5. C# 注册这是一个回发并获取隐藏的 javascript 字段。
  6. C# 将其放入数据库中。

上面的问题是网页的重新加载。我不要那个。我玩过一个不起作用的回调脚本(我有另一个关于尝试调试的问题)。

我的问题是关于在没有回调或回发的情况下完成上述步骤的替代方法?有没有办法简单地从客户端函数按需调用服务器端函数? (我知道回调应该做这件事,但我的不工作)

如果没有这样的选择,为什么回调这么复杂(从新手的角度来看)?为什么我不能像这样简单地调用回调:

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

谢谢。另外,请不要在没有先批评我的情况下“关闭”或标记我的问题。谢谢。

【问题讨论】:

  • 我听说过这个,但它似乎过于复杂......
  • 当他们告诉 tebow 他必须改变投球才能成为职业球员时,他是不是说这太复杂了?!
  • 不幸的是,ASP.Net 与 AJAX 的无缝衔接并不如其应有的那样(ASP.Net MVC 在这方面要好得多)。
  • 如果你在提交后到达相同的url,你可以使用ajax提交并将响应的BODY简单地注入到document.body.innerHTML中,很像rails4。我推荐 jQuery 的 .html() 因为它会为你触发脚本标签。如果您重定向,您正在查看以某种方式将字段自定义连接到 HTML。
  • @Jonesy 当他们告诉哥伦布世界是平的,事情就是这样……我只是想跳出框框思考,但我明白你的意思。

标签: c# javascript asynchronous callback postback


【解决方案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?");
%>

【讨论】:

  • 感谢您的回复。我可以用什么来代替 AjaxHandler.aspx?我正在尝试来自link 的示例,问题似乎出在 url:mypage/csharpfunction
  • @matthewPetersUF 啊,所以您使用的是 ASP.Net AJAX ......这很酷,但还需要几个步骤才能使其正确。如果您遇到特定问题,最好在新问题中详细说明。
  • 我一直在玩 ajax 来让它工作,但虽然我仍然不能,但我认为这不是最好的方法,因为我必须创建一个公共方法,因此暴露一个安全风险。还有其他方法可以完成回调或类似回调吗?
  • @matthewPetersUF 不,唯一的另一种方法是进行完整的回发/页面重新加载。这不应该比其他任何事情都带来更大的安全风险 - 默认情况下,AJAX 调用会被阻止,除非它们来自同一站点。
  • 好吧,谢谢,我会多弄点 AJAX(我不太熟悉)。
猜你喜欢
  • 2011-01-23
  • 1970-01-01
  • 2016-03-09
  • 2012-01-18
  • 2023-03-15
  • 2016-08-14
  • 1970-01-01
  • 1970-01-01
  • 2017-10-06
相关资源
最近更新 更多