在.NET开发中,当需要通过脚本(如JavaScript)调用Web服务时,一个关键特性是`[ScriptService]`属性。这个属性使得Web服务能够被客户端脚本识别和调用,通常在ASP.NET AJAX应用中非常常见。如果你遇到一个异常,提示"仅在类定义上有[ScriptService]特性的Web服务才能从脚本中调用",这表示你的Web服务没有正确设置这个特性,导致了跨脚本调用的问题。 首先,确保你的Web服务类符合以下条件: 1. 在类声明上添加`[System.Web.Script.Services.ScriptService]`注解,这告诉.NET框架该类支持脚本访问。例如: ```csharp [WebService(Namespace = "http://tempuri.org/")] [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] [System.Web.Script.Services.ScriptService] public class WebService : System.Web.Services.WebService ``` 2. 如果你的Web服务类是ASP.NET AJAX兼容的,`WebServiceBinding`属性中的`ConformsTo`参数应该设置为`WsiProfiles.BasicProfile1_1`,以支持JSONP(JSON with Padding)跨域请求。 3. 除了`[ScriptService]`,你还可能需要确保Web服务方法的返回类型是JSON、XML或其他支持的数据类型,因为AJAX请求默认期望JSON格式。例如,如果返回字符串,可以考虑这样定义方法: ```csharp [WebMethod] public string HelloWorld() { return "HelloWorld"; } ``` 4. 在客户端,你可以使用jQuery的`$.ajax()`函数来调用这些Web服务,如下所示: ```javascript <script src="Js/jquery-1.2.6.js" type="text/javascript"></script> <script language="javascript" type="text/javascript"> $(document).ready(function () { Bind(); }); function Bind() { $.ajax({ url: 'WebService.asmx/HelloWorld', // 你的Web服务URL type: 'GET', // 或者'POST',根据Web服务方法的定义 dataType: 'json', // 假设返回的是JSON success: function (data) { console.log(data.d); // 如果是JSONP,可能会是'd'属性 }, error: function (xhr, status, error) { // 处理错误 } }); } </script> ``` 如果没有正确应用`[ScriptService]`或配置数据类型,尝试按照以上步骤调整你的Web服务和客户端代码。如果你在执行Ajax请求时仍然遇到异常,可能需要检查跨域设置、防火墙规则或者服务器端对跨域请求的响应策略。在调试过程中,堆栈跟踪信息会帮助你定位到引发错误的具体代码行。
在做项目的时候碰到了这个问题, 以前做练习的时候没出现过这种问题,于是就郁闷了,到网上一查,还真找到了原因,原来只要注释掉下面一句话就行了
//若要允许使用 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代码
下载后可阅读完整内容,剩余3页未读,立即下载
- 粉丝: 0
- 资源: 13
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- WebLogic集群配置与管理实战指南
- AIX5.3上安装Weblogic 9.2详细步骤
- 面向对象编程模拟试题详解与解析
- Flex+FMS2.0中文教程:开发流媒体应用的实践指南
- PID调节深入解析:从入门到精通
- 数字水印技术:保护版权的新防线
- 8位数码管显示24小时制数字电子钟程序设计
- Mhdd免费版详细使用教程:硬盘检测与坏道屏蔽
- 操作系统期末复习指南:进程、线程与系统调用详解
- Cognos8性能优化指南:软件参数与报表设计调优
- Cognos8开发入门:从Transformer到ReportStudio
- Cisco 6509交换机配置全面指南
- C#入门:XML基础教程与实例解析
- Matlab振动分析详解:从单自由度到6自由度模型
- Eclipse JDT中的ASTParser详解与核心类介绍
- Java程序员必备资源网站大全