只能从脚本中调用在类定义上有[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>
posted @ 2011-06-16 10:01  BobTian  阅读(6273)  评论(0编辑  收藏  举报