将jQuery AJAX与.NET集成

时间:2011-08-05 16:29:35

标签: asp.net ajax web-services .net-4.0

我想从jQuery到我的服务器进行ajax调用。基本上,我希望将请求作为POST发送,其内容类型为x-www-form-urlencoded和相应的参数(parameter1 = X& paramter2 = Y& parameter3 = Z)。我希望响应是JSON。

服务器环境是.NET。我一直在试验下面的三种方法,但却无法让一种方法正常工作。

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

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

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

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

3 个答案:

答案 0 :(得分:1)

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

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

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

人们会告诉你WCF是正确的解决方案,因为它更新,但是当你使用jQuery时,.NET 4的WCF目前还不是很适合。在处理DateTime和Enum类型时,它并不灵活,并且它具有难以理解的字典序列化。 WCF的新WCF Web Api解决了这些问题,但是如果你想在曲线前稍微尝试一下。

答案 1 :(得分:1)

我用过。

  • .aspx - >就像你正在做的那样
  • .ashx - >类似于.aspx,除了页面生命周期中的开销较少。
  • .asmx& wcf - >在请求中传递JSON有什么问题?
  • MVC - >返回JsonResult。当我没有完整的时候,这是我的最爱 API(为此我使用WCF),但我只需要一个或两个请求 返回JSON。当然,这假设整个网站都是 使用MVC编写,否则安装它会有点过分 只需几个电话的框架。

答案 2 :(得分:0)

如果您可以沿着WCF路线行进,我建议您查看Microsoft的WCF WebAPI项目。该项目位于WCF之上,在客户端访问(.NET代码或jQuery Ajax)方面提供了一些细节和简化。 Here是使用jQuery POST表单urlencoded数据的演练。还有其他演练也展示了其他相关任务。

这些服务可以像任何其他WCF服务一样托管,甚至可以在与您网站其余部分相同的ASP.NET项目中托管。

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