【问题标题】:Invisibly sending data back to server - without generating postback无形地将数据发送回服务器 - 不产生回发
【发布时间】:2023-03-05 19:40:05
【问题描述】:

我在我的 asp.net 页面上有一个简单的 javascript 函数,它可以将一些数据写入页面上的隐藏字段。要获取此数据,必须将表单发送回服务器。问题是提交表单会导致重新加载页面,我不希望我的客户经历不必要的回发。所以我假设它可以使用 AJAX 来制作 - 是否有可能我的页面只有一部分会执行 javascript 并在不重新加载整个页面的情况下无形地将数据发送到服务器?如果是,您能否解释一下如何或至少提供我可以找到详细信息的任何来源?

【问题讨论】:

    标签: javascript ajax


    【解决方案1】:

    是的,这是可能的,您基本上可以在您的 javascript 函数中执行 ajax 请求,而无需重新加载页面或任何东西。这是标准的 ajax 做法。

    我会研究 Jquery,它是一个 javascript 库,它封装了许多 javascript 功能并简化了专门为 ajax 编写的代码。

    查看http://docs.jquery.com/Ajax 以供参考。

    【讨论】:

    • 添加到这个答案:我建议使用 .ASHX (webhandler) 文件来处理 Ajax 调用。这是我使用 jQuery 和 ashx 文件找到的教程:mikesdotnetting.com/Article/104/…
    【解决方案2】:

    您走在正确的轨道上,这确实是使用 ajax 完成的。由于您使用了回发一词,我假设您使用的是 asp.net webforms。有一个随附的库 asp.net ajax,您可以在 http://www.asp.net/ajax/ 找到更多关于它的信息,您可以在 http://www.asp.net/learn/ajax/tutorial-01-cs.aspx 开始学习如何使用它

    就像 webforms 是 http 的抽象一样,asp.net ajax 到 ajax 也是如此。尽管它确实使某些事情变得更容易,但它也可以使作者未设想的其他事情变得比他们需要的更难。对于更高级的用法,您可能需要查看http://jquery.com/ 的 jquery,它与 asp.net MVC 配合得很好。在公共域中,jquery 和 asp.net ajax 也有更多的信息、示例和库。但是,如果您已经拥有 webforms 代码库,asp.net ajax 应该可以让您以最快的速度上路。

    【讨论】:

      【解决方案3】:

      如果您使用的是 ASP.NET,他们可以很容易地开始使用 ajax —— Ajax 控件可以添加到 VS 2005 中,并且控件随 VS2008 一起提供。

      查看http://www.asp.net/ajax/ 以获取详细说明如何在 ASP.NET 中使用 Ajax 的说明/视频。最简单的设置是在标记中的内容周围放置一个 UpdatePanel,它会自动对 UpdatePanel 内的任何内容进行异步更新,而无需回发。

      【讨论】:

        【解决方案4】:

        W3 SChools 有一个非常简单的教程。

        【讨论】:

          【解决方案5】:

          使用 javascript 库。例如,您可以使用原型 (http://prototypejs.org) 库来实现您想要的,只需像这样编写代码:

          var serialized = $("formId").serialize(true);
          new Ajax.Request(
            "your/url/here",
            method: "post",
            parameters: serialized,
            onSuccess: function(response) {alert("data sent");},
            onFailure: function(response) {
              var msg = "Server error on AJAX request: ";
              msg += response.status;
              msg += " " + response.statusText;
              alert(msg);
            },
            onException: function(response, stacktrace) {
              var msg = "Exception in AJAX callback\n";
              for (var i in stacktrace) {
                msg += i + " = " + stacktrace[i] + "\n";
              }
              alert(msg);
            }
          );
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2019-02-08
            • 2016-01-12
            • 2018-03-17
            • 2016-08-28
            • 2016-02-08
            • 1970-01-01
            • 2015-10-22
            相关资源
            最近更新 更多