不可见地将数据发送回服务器 - 不会产生回发

时间:2009-08-31 21:40:45

标签: javascript ajax

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

5 个答案:

答案 0 :(得分:4)

是的,这是可能的,你基本上会在你的javascript函数中执行ajax请求,而不必重新加载页面或任何东西。这是标准的ajax练习。

我会研究Jquery,它是一个包含大量javascript功能的javascript库,并简化了为ajax专门编写代码。

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

答案 1 :(得分: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应该能让你最快。

答案 2 :(得分:2)

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

查看http://www.asp.net/ajax/,了解详细说明如何在ASP.NET中使用Ajax的说明/视频。最简单的设置是在标记中围绕内容放置UpdatePanel,它将自动在UpdatePanel内的任何内容上异步进行更新,而不进行回发。

答案 3 :(得分:0)

W3 SChools有一个非常直接的教程。

答案 4 :(得分:0)

使用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);
  }
);