0

我是否需要使用 Web 服务来使用 JQuery 执行“Ajax”以获取 JSON 格式的数据?同事推荐我用一个“Httphandler”……最后想知道是不是不能直接调用DataAccessLayer中的一个方法,传给Ajax……

我迷路了,如果我真的需要一个 Web 服务来用 JQuery 做 Ajax,有人可以解释一下吗?只有一台服务器(没有远程服务器),所以我可能不需要网络服务吗?

4

3 回答 3

1

您实际上并不需要单独的 Web 服务。您实际上可以在同一页面上执行 AJAX。我对此有点生疏,所以请耐心等待,但您要做的就是:

  1. 从 AJAX 控件工具包中添加 ToolkitScriptManager
  2. 在您的 HTML 中,将其添加到表单标记之后<asp:ToolkitScriptManager runat="server" EnablePageMethods="true"/>
  3. [ScriptService]属性添加到您的页面类声明
  4. [ScriptMethod]为您要调用的方法添加一个属性。默认情况下,它以 JSON 格式传输,但您可以使用 XML 响应[ScriptMethod(ResponseFormat = ResponseFormat.Xml)]
  5. 这个方法需要是静态的,因为它应该在不重新运行页面渲染周期的情况下执行。
  6. 现在你只需要一些 jQuery 来调用函数
[ScriptService]
public class MyPage : Page
{
   [ScriptMethod]
   public static string GetText() { return "Hello, world!"; }
}
<html>
<!-- jQuery scripts -->
<body>
<script language="javascript">
   $.ready(function () {

   var text = PageMethods.GetText();
   $("#label1").value(text);
   });
</script>
<form runat="server">

  <asp:ToolkitScriptManager runat="server" EnablePageMethods="true"/>
  <asp:Label runat="server" ID="label1"/>

</form>
</body>
</html>
于 2012-09-05T12:55:31.047 回答
0

不,你没有。你需要做的就是

  • 在标头“application/json”中发送正确的内容类型
  • 重新安排服务器端输出以返回实际输出的 JSON 字符串表示
于 2012-09-05T12:47:34.940 回答
0

您可以使用 AJAX 调用常规的 .aspx(我知道 asp.net 中的 HttpHandler)页面。但是在这种情况下,您正在做很多额外的工作(您必须停止页面执行的常规流程,确保您不返回一些垃圾,将响应转换为 JSON 等)同时 -webservice 不需要所有这些基础设施常规页面(在 asp.net 中)需要,并且不会在您的服务器上产生额外的负载。HttpHandler 也是如此。你只做你需要的,没有别的。

于 2012-09-05T12:52:03.367 回答