none
JQuery调用WebService回调问题 RRS feed

  • 问题

  • 试了两天了..每次调用的结果都是进入error处理函数,说死都不执行回调函数..在网上查找了N多资料,也试了N多的方法,都不行
    我用VS2005,建立的网站没有使用AJAX1.0扩展库.

    以下是WebMethod,我肯定已经引用了[System.Web.Script.Services.ScriptService]

        [WebMethod]
        public string HelloWorld()
        {
            return "HelloWorld";
        }
    
    以下是JS脚本
    <script language="javascript" type="text/javascript">
            $(document).ready(function(){
                    $.ajax({
                        type: "POST", 
                        contentType: "application/json;charset=utf-8", 
    url: "../web/WebService.asmx/HelloWorld",
    data: "{}",
    dataType: 'json', success: function(result){
    alert(result.d); }, error:function(res,text){ alert(text); } }); }); </script>
    实在是找不到原因了...郁闷的要死...
    • 已编辑 掌握星辰 2009年12月7日 5:00 代码复制错了
    2009年12月6日 11:51

答案

全部回复

  • 复制粘贴即可  注意啊 我的asmx文件名是WebService1.asmx  请更改成你的文件名 
    <script language="javascript" type="text/javascript">
            $(document).ready(function(){
                    $.ajax({
                        type: "POST",
                      contentType: "application/json",
                      url: "../web/WebService1.asmx/HelloWorld",
                      data: "{}",// data: "{paraName:paraValue}",                                 
                     dataType: 'json',
                      success: function(result) {                   
                              alert(result.d);
                         },
                         error: function(res) {
                            alert(res); 
                        }
                    });
            });
        </script>
    2009年12月6日 14:08
  • 谢谢回复,不过效果还是一样...依然只执行error函数
    天高云淡,月冷风清,一人孤独的守候.希望有一片心灵的净土,忘却尘世的喧嚣,慢慢展现一种曾经向往的生活.
    2009年12月7日 5:01
  • 在webservice的类前面这句话要加上。如果没加上,那你加上再试试

        // To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line. 
         [System.Web.Script.Services.ScriptService]

    Microsoft Online Community Support
    2009年12月7日 6:36
  • 我肯定我加上了...
    天高云淡,月冷风清,一人孤独的守候.希望有一片心灵的净土,忘却尘世的喧嚣,慢慢展现一种曾经向往的生活.
    2009年12月7日 6:47
  • 那报什么错?
    有没测试webservice能否访问?


    Microsoft Online Community Support
    2009年12月7日 6:51
  • webservice访问正常,jq返回的错误信息是:"parsererror" or "error"
    天高云淡,月冷风清,一人孤独的守候.希望有一片心灵的净土,忘却尘世的喧嚣,慢慢展现一种曾经向往的生活.
    2009年12月7日 7:13
  • 我测试过了没问题的
    只有两个可能是路径问题  或者asmx代码问题 贴出代码

    2009年12月7日 7:14
  • 为了使用[System.Web.Script.Services.ScriptService]我引用了System.Web.Extensions和System.Web.Extensions.Design类库,因为在.NET2.0不打AJAX1.0类库补丁的情况下是使用不了[System.Web.Script.Services.ScriptService]的.而且,我不是很清楚,在这种情况下是不是需要配置web.config

    webservice中的代码如下:

    using System;
    using System.Web;
    using System.Collections;
    using System.Web.Services;
    using System.Web.Services.Protocols;
    
    
    /// <summary>
    /// WebService 的摘要说明
    /// </summary>
    [WebService(Namespace = "http://tempuri.org/")]
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
    [System.Web.Script.Services.ScriptService]
    public class WebService : System.Web.Services.WebService
    {
    
        public WebService()
        {
    
            //如果使用设计的组件,请取消注释以下行 
            //InitializeComponent(); 
        }
    
        [WebMethod]
        public string GetLink()
        {
            System.Collections.Generic.List<Model.FriendLinkInfo> list = BLL.FriendLinkManager.GetFriendLink();
            System.Text.StringBuilder str = new System.Text.StringBuilder();
            foreach (Model.FriendLinkInfo fli in list)
            {
                str.Append(fli.SiteUrl + "|" + fli.SiteName + ",");
                //str += "<a href='" + fli.SiteUrl + "' alt='" + fli.SiteName + "'>" + fli.SiteName + "</a>";
            }
            return "{link:'" + str.ToString() + "'}";
        }
        [WebMethod]
        public string HelloWorld()
        {
            return "{link:'HelloWorld'}";
        }
    }
    我用的页面是HTML格式,脚本也写在里面了,代码如下:
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" >
    <head>
    <meta http-equiv="Content-Type" content="text-html;chaerset=utf-8" />
        <title>无标题页</title>
        <script language="javascript" type="text/javascript" src="../web/Template/js/jquery.js"></script>
        <script language="javascript" type="text/javascript">
            $(document).ready(function(){
                    $.ajax({
                        type: "POST",
                      contentType: "application/json",
                      url: "../web/WebService.asmx/HelloWorld", 
                      data: "{}",// data: "{paraName:paraValue}",                                  
                     dataType: 'json',
                      success: function(result) {  alert("aaa");                  
                              //alert(result.d);
                         },
                         error: function(res) {alert("bbb");
                            //alert(res + "  aaa");  
                        }
                    });
            });
        </script>
    </head>
    <body>
    <div id="link"><strong>友情链接:</strong>
    </div>
    </body>
    </html>

    天高云淡,月冷风清,一人孤独的守候.希望有一片心灵的净土,忘却尘世的喧嚣,慢慢展现一种曾经向往的生活.
    2009年12月7日 11:00
  • 很遗憾 这个类不支持2.0的 查了msdn 只支持3.5以上版本
    2.0只能打上ajax补丁才行
    2009年12月7日 11:18
  • 原来是这样...十分感谢您的解答...
    天高云淡,月冷风清,一人孤独的守候.希望有一片心灵的净土,忘却尘世的喧嚣,慢慢展现一种曾经向往的生活.
    2009年12月7日 12:06