Wcf 如何从jquery调用服务引用?

Wcf 如何从jquery调用服务引用?,wcf,jquery-ui,jquery,Wcf,Jquery Ui,Jquery,我已经为我的asp.net web应用程序添加了一个服务引用(最初它只是一个纯html站点,我们将其转换为web应用程序) 我们需要通过jquery/ajax而不是从任何.cs文件中访问WCF服务。到目前为止,我们还无法让jquery以任何方式访问该服务,甚至在它被转换为web应用程序之前(转换的目的是希望添加服务引用和调用它会更容易) 我让WCF服务在一个单独的解决方案中运行,该解决方案在我的桌面上运行,web应用程序单独打开。我的服务称为SchoolService,位于servicerenc

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

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

我让WCF服务在一个单独的解决方案中运行,该解决方案在我的桌面上运行,web应用程序单独打开。我的服务称为SchoolService,位于servicerences文件夹中

在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);
        }
}
使用System.Collections.Generic;
使用System.ServiceModel;
使用System.ServiceModel.Web;
使用MyApp.DomainModel;
名称空间MyAppService
{
[服务合同]
公共接口ISchoolService
{
[经营合同]
[WebGet(ResponseFormat=WebMessageFormat.Json)]
IList-GetSchools(字符串术语);
[经营合同]
[WebGet(ResponseFormat=WebMessageFormat.Json)]
School GetSchool(字符串School name);
}
}
需要采取哪些必要的具体步骤来实现这一目标?目标是让用户在文本框中键入,使用jquery autocomplete,它使用ajax调用服务来提取包含键入文本的数据。。。这肯定是以前做过的吗


CD

你可以看一下。作者正是在讨论WCF服务和JQuery客户端的这个概要文件

你可以看看。作者正是在讨论WCF服务和JQuery客户端的这个概要文件

没有人能回答这个问题,但我们找到了答案。它与jsonp或跨域无关


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

没有人能够回答这个问题,但我们已经解决了。它与jsonp或跨域无关


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

看起来像是一个同源策略问题。您需要实现JSONP来解决这个问题例如?这是跨域ajax请求的一个普遍问题,请检查此链接,因为。我假设您的web应用程序位于一个端口上,并且您正在另一个端口上进行wcf服务调用,这对于浏览器来说是一个跨域的问题。是的,这是一个不断出现的术语。该服务在特定端口上运行,站点无法访问它。我现在查看这个示例,以了解如何实现:如果您有更好的示例,我将不胜感激。您需要实现JSONP来解决这个问题例如?这是跨域ajax请求的一个普遍问题,请检查此链接,因为。我假设您的web应用程序位于一个端口上,并且您正在另一个端口上进行wcf服务调用,这对于浏览器来说是一个跨域的问题。是的,这是一个不断出现的术语。该服务在特定端口上运行,站点无法访问它。我现在查看这个示例来了解如何实现:如果您有更好的示例,我将非常感激。这没有帮助,我没有使用REST。这没有帮助,我没有使用REST