从 jquery 调用 wcf rest 服务不起作用

Posted

技术标签:

【中文标题】从 jquery 调用 wcf rest 服务不起作用【英文标题】:Calling wcf rest service from jquery doesn't work 【发布时间】:2010-12-12 18:59:38 【问题描述】:

我编写了一个非常简单的 wcf 休息服务,当我通过 fiddler 向它发出请求时它似乎工作正常,但从 JQuery 调用它时我无法让它工作。

服务:

[ServiceContract]
public interface IService1

    [OperationContract]
    [WebInvoke(Method = "POST",
                UriTemplate = "customers/regionId",
                ResponseFormat = WebMessageFormat.Json
    )]
    Customer[] GetCustomers(String regionId);


[DataContract]
public class Customer

    [DataMember]
    public Guid Id  get; private set; 

    [DataMember]
    public String Name  get; private set; 

    public Customer(Guid id, String name)
    
        Id = id;
        Name = name;
    


public class Service1 : IService1
        
    public Customer[] GetCustomers(String regionId)
    
        return new[]
               
                   new Customer(Guid.NewGuid(), "john"),
                   new Customer(Guid.NewGuid(), "pete"),
                   new Customer(Guid.NewGuid(), "ralph")                       
               ;
    

我可以通过 fiddler 向该服务发出请求,它会返回预期的 json。但是,当我尝试通过萤火虫控制台使用 JQuery ajax 调用它时,它总是失败。这是电话:

$.ajax( 类型:“发布”, 数据: ””, 网址:“http://127.0.0.1:8081/json/customers/1”, contentType: "应用程序/json; charset=utf-8", 数据类型:“json”, 成功:功能(资源) 警报(“成功”); , 错误:函数(xhr) alert('失败:'+xhr.responseText); );

我总是收到失败的警报,并且 responseText 总是空白。任何想法将不胜感激。

【问题讨论】:

【参考方案1】:

当您说“通过 Fiddler”时,您的意思是“使用 Fiddler 的请求构建器”还是“运行 Fiddler”?

问题:您的网站在哪个 URL 上运行?您通常不能使用 XHR 向不同的服务器(或 FF 中的端口)发出 XHR 请求。

【讨论】:

以上是关于从 jquery 调用 wcf rest 服务不起作用的主要内容,如果未能解决你的问题,请参考以下文章

WCF REST用jquery下载pdf

Jquery 无法从 WCF REST 服务获得响应

WCF REST 服务返回 405:jQuery AJAX GET 不允许的方法

跨域 jQuery Ajax 请求和 WCF REST 服务

Jquery Rest 与 WCF 3.5 的通信

JSON 中基于 WCF REST 的响应的 JQUERY AJAX