如何从jquery调用服务引用?

时间:2011-11-29 17:10:04

标签: wcf jquery-ui jquery

我已经为我的asp.net Web应用程序添加了一个服务引用(最初它只是一个直接的html网站,我们将其转换为Web应用程序)

我们需要通过jquery / ajax访问WCF服务,而不是从任何.cs文件中访问。到目前为止,我们无法通过任何方式获得jquery,甚至在它被转换为Web应用程序之前(转换为希望更容易添加服务引用并调用它)

我在桌面上运行的单独解决方案中运行WCF服务,并且Web应用程序单独打开。我的服务名为SchoolService,位于Service References文件夹中。

如何在jquery中调用该服务引用?

这是我们从一个也不起作用的演示中使用的:

<script type="text/javascript">
    $(document).ready(function () {
        var schoolsCache = {}, lendersCache = {}, schoolsXhr, lendersXhr;

        $('#Schools').autocomplete({
            source: function (request, response) {
                var term = request.term;
                if (term in schoolsCache) {
                    response(schoolsCache[term]);
                    return;
                }
                if (schoolsXhr != null) {
                    schoolsXhr.abort();
                }
                schoolsXhr = $.getJSON('SchoolService.svc/GetSchools', request, function (data, status, xhr) {
                    schoolsCache[term] = data.d;
                    if (xhr == schoolsXhr) {
                        response(data.d);
                        schoolsXhr = null;
                    }
                });
            }
        });
     });
</script>

我也试过这条不起作用的行:

schoolsXhr = $.getJSON('http://localhost:8000/SchoolService/GetSchools', request, function (data, status, xhr) {

以下是我的WCF sdervice中的界面:

using System.Collections.Generic;
using System.ServiceModel;
using System.ServiceModel.Web;
using MyApp.DomainModel;

namespace MyAppService
{
        [ServiceContract]
        public interface ISchoolService
        {
                [OperationContract]
                [WebGet(ResponseFormat = WebMessageFormat.Json)]
                IList<School> GetSchools(string term);

                [OperationContract]
                [WebGet(ResponseFormat = WebMessageFormat.Json)]
                School GetSchool(string schoolName);
        }
}

使这项工作需要哪些必要的具体步骤?目标是让用户输入文本框,使用jquery autocomplete,它使用ajax调用服务来提取包含键入文本的数据......这肯定是在以前完成的吗?

CD

2 个答案:

答案 0 :(得分:1)

您可以查看this CodeProject article。作者正在讨论这个配置文件WCF服务和JQuery客户端。

答案 1 :(得分:0)

没有人能够回答这个问题,但我们发现了这一点。它与jsonp或跨域无关。

来自javascript的调用会对url进行$ .getJSON调用。 url是项目中.svc文件的相对URL。 .svc文件只不过是一个passthru,它构造与引用服务的连接并进行调用,然后返回到ajax调用。