0

jquery ajax 呼び出しでデータ サービス関数を使用しようとしています。それを呼び出す多くの方法を試し、サービス コントラクトとデータ サービスを設定しましたが、XML が何を提供し続けても関係ありません。jsonp を使用する必要があると言う人もいますが、これは本当に必要ですか?

 [ServiceContract]
 public interface IService1
 {

    [OperationContract]
    [WebInvoke(Method = "POST", BodyStyle = WebMessageBodyStyle.WrappedRequest, ResponseFormat = WebMessageFormat.Json)]
    string GetData(int value);

    [OperationContract]
    CompositeType GetDataUsingDataContract(CompositeType composite);

    // TODO: Add your service operations here
}


// Use a data contract as illustrated in the sample below to add composite types to service operations.
[DataContract]
public class CompositeType
{
    bool boolValue = true;
    string stringValue = "Hello ";

    [DataMember]
    public bool BoolValue
    {
        get { return boolValue; }
        set { boolValue = value; }
    }

    [DataMember]
    public string StringValue
    {
        get { return stringValue; }
        set { stringValue = value; }
    }
}

これは私のデータ サービス クラスです

 public class MyService : DataService<MyEntities>
{
    private readonly MyEntities _dataSource;

    public MyService() : this(new MyEntities()) { }

    // im doing DI since I am testing my service operations with a local DB
    public MyService(MyEntities dataSource)
    {
        _dataSource = dataSource;
    }

    protected override MyEntities CreateDataSource()
    {
        return _dataSource;
    }

    // This method is called only once to initialize service-wide policies.
    public static void InitializeService(DataServiceConfiguration config)
    {
        config.SetEntitySetAccessRule("Teams", EntitySetRights.AllRead);
        config.DataServiceBehavior.MaxProtocolVersion = DataServiceProtocolVersion.V3;
    }

}

これはjquery ajaxです。エラーを警告するだけで、コンソールでエラーを調べると、XML を取得しているため、json 解析エラーになります。

var url = "http://localhost:2884/MyService.svc/Teams";
$.ajax({
    type: "GET",
    url: url,
    contentType: 'application/json; charset=utf-8',
    accept: 'application/json',
    dataType: 'json',
    success: function (msg) {
        alert(msg.d);
    },
    error: function(xhr, ajaxOptions, thrownError) {
                alert("error : " + xhr + ajaxOptions + thrownError);
            }
});
4

1 に答える 1