jquery wcf数据服务返回atom + xml而不是json

时间:2011-03-25 18:03:02

标签: jquery wcf json

本地一切正常但是当我将wcf数据服务部署到服务器时,响应是atom + xml。我错过了什么吗?

jquery的

      $(function () {
                $.ajax({                    
                    contentType: "application/json; charset=utf-8",  
                    url: "http://subdomain.domain.com/wcfdataservice.svc/surveys/",
                    dataType: "jsonp",
                    success: function (data, textStatus) {

                    },
                    error: function (data, textStatus) {

                    }
                });      

        });

wcf web.config

    <system.web>
    <compilation debug="false" targetFramework="4.0" />

<authentication mode="None"/>

</system.web>
<system.webServer>
    <modules runAllManagedModulesForAllRequests="true">
        <add name="UrlRoutingModule" type="System.Web.Routing.UrlRoutingModule, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
    </modules>
</system.webServer>
<system.serviceModel>
    <serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" />
    <standardEndpoints>
        <webHttpEndpoint>
            <standardEndpoint name="" helpEnabled="true" automaticFormatSelectionEnabled="true" crossDomainScriptAccessEnabled="true" />
        </webHttpEndpoint>
    </standardEndpoints>

</system.serviceModel>

提琴手

        HTTP/1.1 200 OK
Cache-Control: no-cache
Content-Length: 13483
Content-Type: application/atom+xml;charset=utf-8
Server: Microsoft-IIS/7.5
DataServiceVersion: 2.0;
X-AspNet-Version: 4.0.30319
X-Powered-By: ASP.NET
Date: Fri, 25 Mar 2011 17:46:37 GMT

<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<feed xml:base="http://subdomain.domain.com/wcfdataservice.svc/" xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices" xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata" xmlns="http://www.w3.org/2005/Atom">
...

1 个答案:

答案 0 :(得分:2)

我认为Pablo Castro对这个问题的answer是您正在寻找的解决方案。

基本上,您需要在请求中指定“application / json”的“accept”标头,并且还可以选择使用服务上的[JSONPSupportBehavior]属性。我认为,既然你正在控制两端,那么接受标题就是你所需要的。

编辑:如果您使用Fiddler检查您的请求并且您没有看到设置或未正确设置“接受”标头,您可以在此处使用此技术文章:

http://snipplr.com/view/9869/set-jquery-ajax-header/

希望这有帮助!