こんにちは、Jquery からアクセスできるように WCF サービスを作成しました。IE 8、IE では動作しますが、Firefox では動作しません。
これは私のサービスクラスです
namespace JSONSample
{
[ServiceContract]
public interface IService1
{
[OperationContract]
[WebGet( ResponseFormat = WebMessageFormat.Json)]
Employee[] getData();
}
[DataContract]
public class Employee
{
[DataMember]
public string id { get; set; }
[DataMember]
public string name { get; set; }
}
}
そして実装
namespace JSONSample
{
public class Service1 : IService1
{
#region IService1 Members
public Employee[] getData()
{
return new Employee[] { new Employee() { id = "1", name = "John" }, new Employee() { id = "2", name = "Bourne" }, new Employee() { id = "3", name = "Harry" } };
}
#endregion
}
}
Webconfig のエンドポイント
エンドポイントを作成しました
<system.serviceModel>
<behaviors>
<serviceBehaviors>
<behavior name="JSONSample.Service1Behavior">
<serviceMetadata httpGetEnabled="true"/>
<serviceDebug includeExceptionDetailInFaults="false"/>
</behavior>
</serviceBehaviors>
<endpointBehaviors>
<behavior name="web">
<webHttp/>
</behavior>
</endpointBehaviors>
</behaviors>
<services>
<service behaviorConfiguration="JSONSample.Service1Behavior" name="JSONSample.Service1">
<endpoint address="" binding="webHttpBinding" contract="JSONSample.IService1" behaviorConfiguration="web"/>
</service>
</services>
</system.serviceModel>
Html からの呼び出しは get を使用しており、サーバーにデータを送信していません
jQuery.support.cors = true;
$(document).ready(function() {
$.ajax({
type: "GET",
url: "http://localhost:51220/Service1.svc/getdata",
contentType: "application/json; charset=utf-8",
dataType: "json",
processdata: false,
success: function(msg) {
alert(msg);
},
error: function ServiceFailed(result) {
alert('Service call failed: ' + result.status + '' + result.statusText);
}
});
});
なぜこれは IE でのみ機能し、Firefox では機能しないのですか?