只能从脚本中调用在类定义上有[ScriptService]属性的 Web 服务问题的解决方法
在做项目的时候碰到了这个问题, 以前做练习的时候没出现过这种问题,于是就郁闷了,到网上一查,还真找到了原因,原来只要注释掉下面一句话就行了
//若要允许使用 ASP.NET AJAX 从脚本中调用此 Web 服务,请取消对下行的注释。。下面是解决我问题的文章,转载在下面。
jQuery.ajax( options )
有很多选项,介绍其中的几个:
·dataType:想从服务器得到哪种类型的数据。xml,html,script,json,jsonp,text
·success:请求成功后的处理函数
·type:以POST或GET的方式请求。默认GET。PUT和DELETE也可以用,但并不是所有的浏览器都支持
·url:请求的目的地址,须是一个字符串。
·complete:不管请求成功还是错误,只要请求完成,可以执行的事件。
·beforeSend:传递异步请求之前的事件。
·contentType:不能为空,
·data:传递参数,即使data为空,也要带空参数
注【在.net3.5中,访问web服务,要对web服务添加修饰:[System.Web.Script.Services.ScriptService] 否则,当.ajax()请求服务时,会有异常:只能从脚本中调用在类定义上有[ScriptService]属性的 Web 服务】
ajax调用webService:CS代码
[WebService(Namespace = "http://tempuri.org/")] [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] //若要允许使用 ASP.NET AJAX 从脚本中调用此 Web 服务,请取消对下行的注释。 [System.Web.Script.Services.ScriptService] public class WebService : System.Web.Services.WebService { public WebService () { //如果使用设计的组件,请取消注释以下行 //InitializeComponent(); } [WebMethod] public string HelloWorld() { return "Hello World"; } }
js代码:
<script src="Js/jquery-1.2.6.js" type="text/javascript"></script> <script language="javascript" type="text/javascript"> $(function() { Bind(); }); function Bind() { $.ajax({ type: "POST", contentType: "application/json", url: "WebService.asmx/HelloWorld", data: "{}", dataType: 'json', success: function(result) { alert(result.d) }, error: function() { alert("error") } }); } </script>