[英]ASP.NET: Web Service or WCF for simple ajax call?
我只想简单地通过ajax在我的Web服务上调用一个方法,并让它返回一个值。
我应该使用“ WCF服务”,“启用AJAX的WCF服务”还是“ Web服务”
哪个最简单?
请改用通用HTTP处理程序。 它们更易于编码。
您应该使用启用了Ajax的WCF服务。 我不记得确切的名称了,但是它应该标记一个属性,以便可以从JS访问。
除非维护现有代码且不能更改,否则永远不要使用“ Web服务”模板。
如果您只是调用单个方法,请使用ScriptMethod
您可以在使用它的页面上内联编码。 http://www.asp.net/ajax/tutorials/understanding-asp-net-ajax-web-services
使用ScriptMethod属性
ScriptService属性是必须在.NET Web服务中定义的唯一ASP.NET AJAX属性,ASP.NET AJAX页才能使用它。 但是,另一个名为ScriptMethod的属性也可以直接应用于服务中的Web方法。 ScriptMethod定义了三个属性,包括UseHttpGet,ResponseFormat和XmlSerializeString。 在以下情况下,更改这些属性的值可能很有用:需要将Web方法接受的请求类型更改为GET,或者Web方法需要以XmlDocument或XmlElement对象的形式返回原始XML数据时,从服务返回的值应始终序列化为XML而不是JSON。
当Web方法应接受GET请求而不是POST请求时,可以使用UseHttpGet属性。 使用带有将Web方法输入参数转换为QueryString参数的URL发送请求。 UseHttpGet属性默认为false,仅当已知操作安全且未将敏感数据传递到Web Service时才应将其设置为true。 清单6显示了将ScriptMethod属性与UseHttpGet属性一起使用的示例。
如果只有这些,我发现启用AJAX的WCF服务最简单。 它仍然是WCF,但它为您模板化了正确的web.config设置,并断开了普通“ WCF服务”模板为您提供的界面。 就整个WCF混乱而言,这似乎是最接近旧ASMX风格的最接近的事情,因为它很容易上手。
作为另一种选择,如果您恰好能够在Webforms项目中使用ASP.NET MVC,并且只需要使用它进行Ajax调用,则可以完全跳过Web服务hoopla并为您的AJAX调用创建一个简单的JSON结果,如下所示:
// put this method in a controller
public JsonResult AjaxJsonTest(string who) {
var result = new {
Success = true,
Message="Hello, " + (who ?? "world!")
};
return Json(result, JsonRequestBehavior.AllowGet);
}
然后可以从jQuery这样调用它:
<script language="javascript" type="text/javascript">
function AjaxTestClick() {
$.ajax({
type: "POST",
url: '<%: Url.Action("AjaxJsonTest", "Test") %>',
data: { who: 'whomever' },
success: function (resultData) {
if (resultData.Success) {
alert(resultData.Message);
}
else {
alert('Ajax call failed.');
}
}
});
}
</script>
众多选择-选择最适合您的情况。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.