Web Services MOSS 2007 Web部件中的Ajax

gcuhipw9  于 2023-10-24  发布在  其他
关注(0)|答案(2)|浏览(109)

我正在MOSS 2007中创建一个包含自动完成扩展程序的Web部件。
我通过在web.config中添加所有的JavaScript来启用我的站点(例如here
我的网络服务:

[System.Web.Script.Services.ScriptService]
    public class AutoComplete : System.Web.Services.WebService
    {
        [System.Web.Services.WebMethod]
        [System.Web.Script.Services.ScriptMethod]
        public string[] GetCompletionList(string prefixText, int count)
        {
                    List<string> results = new List<string>();
                    results.Add("Here");
                    results.Add("Here");
                    results.Add("Here");
                    results.Add("Here");
                    results.Add("Here");
                    results.Add("Here");
                    results.Add("Here");
                    return results.ToArray();
         }
   }

我可以从web浏览器访问web服务。但是,autocompleteextender不调用我的web服务。
我的Web服务URL:http://[myserver]/AutoComplete.asmx(我将其用于扩展程序的ServicePath)。
我还试着在页面上添加一个日历扩展器,日历在文本框下面呈现,并显示为内联html。奇怪。
任何想法都会有帮助。
谢谢

nc1teljy

nc1teljy1#

从您的Web服务URL来看,您似乎已将Web服务放入网站的根文件夹中。这将不起作用,因为此文件夹由SharePoint VirtualPathProvider处理,它将在内容数据库中查找文件。
您应该将您的Web服务放入一个JAR或12Hive\ISAPI或12Hive\LAYOUTS中,然后通过相应的

http://[myserver]/_vti_bin/[Folder]/AutoComplete.asmx

http://[myserver]/_layouts/[Folder]/AutoComplete.asmx
wvmv3b1j

wvmv3b1j2#

我不明白为什么你需要一个Web服务,如果你使用AJAX?你可以把代码放在你的Web部件(或任何你构建的东西)里面,然后在更新面板里面做一个回发来获取值。更容易实现/安装/调试/支持。
当然,前面的答案是正确的,关于Web服务的位置。我只是可以补充说,通常的位置将是_vti_bin,而不是布局,你通常把你的自定义ASPX页面,但当然这两个技术上都可以工作。
请记住,您还应该使用代码或母版页标记向页面添加脚本管理器,否则它将无法工作,无论您是否将AJAX添加到web.config

相关问题