Asp.net jQueryAjax与.NET的集成

Asp.net jQueryAjax与.NET的集成,asp.net,ajax,web-services,.net-4.0,Asp.net,Ajax,Web Services,.net 4.0,我想从jQuery向我的服务器发出一个ajax调用。基本上,我希望请求以POST的形式发送,内容类型为x-www-form-urlencoded和相应的参数(parameter1=x¶meter2=Y¶meter3=Z)。我希望响应是JSON 服务器环境是.NET。我一直在尝试下面的三种方法,但没有一种能很好地工作 ASPX-使用ASPX处理并返回JSON,我可以让它工作,但我需要自己序列化JSON。这是可能的,但我希望有更方便的。另外,如果我错了,请纠正我的错误,但我可以想象a

我想从jQuery向我的服务器发出一个ajax调用。基本上,我希望请求以POST的形式发送,内容类型为x-www-form-urlencoded和相应的参数(parameter1=x¶meter2=Y¶meter3=Z)。我希望响应是JSON

服务器环境是.NET。我一直在尝试下面的三种方法,但没有一种能很好地工作

ASPX-使用ASPX处理并返回JSON,我可以让它工作,但我需要自己序列化JSON。这是可能的,但我希望有更方便的。另外,如果我错了,请纠正我的错误,但我可以想象aspx页面会有很多额外的开销,因为它们不仅仅是执行一个方法并返回简单的JSON

ASMX和WCF-使用ASMX和WCF,我可以让它返回JSON,但前提是我在请求中发送JSON

此请求/响应类型的最佳服务器端“框架”是什么。aspx、.asmx或WCF?既然我至少能够让aspx为此工作,那么这是一种合适的方法吗?


我见过其他产品通过web服务公开API,并使用带有JSON响应类型的名称/值查询字符串请求格式,但在.NET中这似乎是一项很难完成的任务。

如果您同意使用WCF,我建议您看看Microsoft的项目。该项目位于WCF之上,在客户端访问(.NET代码或jQuery Ajax)方面提供了一些细节和简化。是一个使用jQuery发布表单URL编码数据的演练。还有其他演练演示其他相关任务

这些服务可以像任何其他WCF服务一样托管,甚至可以像站点的其他部分一样托管在同一个ASP.NET项目中


目前,该项目处于早期开发阶段,并且有一些“上线”限制,但根据您的项目需要,这可能会很好,这对我们来说是正确的。

ASPX页面会带来额外的开销。即使您根本不使用WebForms框架,对ASPX页面的请求仍然必须在整个页面生命周期中过滤

如果您更喜欢这种低级方法,读取QueryString参数并使用手动序列化的JSON进行响应,那么ASHX HttpHandler可能是最好的解决方案

就个人而言,我更喜欢ASMX服务。在中发送JSON参数并不是很困难(而且一旦开始发送嵌套对象或集合,最终可能会这样做,通过简单的键/值对会造成混乱),避免在每个请求过程中进行不必要的反序列化和序列化是很好的

人们会告诉你WCF是正确的解决方案,因为它比较新,但是.NET4的WCF在你使用jQuery时并不适合。在处理DateTime和Enum类型时,它没有那么灵活,而且它具有笨拙的字典序列化。WCF的新产品解决了这些问题,但如果你想尝试一些超前的东西。

我用过

  • .aspx->完全按照您的方式操作
  • .ashx->与.aspx类似,只是页面生命周期中的开销较小
  • .asmx&wcf->在请求中传递JSON有什么问题
  • MVC->返回JsonResult。这是我最喜欢的,当我不做一个完整的 API(为此我使用WCF),但我只需要一个或两个请求 返回JSON。当然,这是假设整个站点是 使用MVC编写,否则安装 只需几个调用的框架