jQueryを使用してaspxページからjson wcfメソッドを呼び出して質問があります。 IISに展開jQueryを使用してJSON wcfサービスを呼び出します。
[ServiceContract]
public interface IEParcelService
{
[OperationContract]
[WebInvoke(Method = "GET", ResponseFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Wrapped,
UriTemplate = "Test")]
Response<string> Test();
}
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
public class EParcelServiceImpl : IEParcelService
{
public Response<string> Test()
{
return WebServiceHelper.Execute(() => "Test Message");
}
}
このサービス:
これは私の試験方法です。 Chromeからこのメソッドを呼び出すと、http://localhost/TestService/ServiceImpl.svc/Test すべてが正常で、結果が表示されます。しかし、私がjQueryから呼び出すとき 私はエラーがあります:NETWORK_ERR:XMLHttpRequest Exception 101.私はGoogleで解決策を見つけようとします。 しかし結果は成功しませんでした。どのように私はそれを解決することができます?
jQueryのコール:
<script language="javascript">
$().ready(function() {
$("#myButt").click(function() {
$.ajax({
cache: false,
async: false,
type: "GET",
url: "http://localhost/EParselService/EParcelServiceImpl.svc/Test",
contentType: "application/json",
dataType: "json",
success: function (data, textStatus){
alert('successCallBack called');
alert(data);
alert(textStatus);
},
error: function (XMLHttpRequest, textStatus, errorThrown) {
alert('errorCallBack called');
alert('textStatus = ' + textStatus + '/nerrorThrown = ' + errorThrown);
}
});
alert('Done!');
});
});
</script>
<input type="button" value="Get values from server" id="myButt" />
これはおそらくクロスサイトの問題です。同じiisであなたのhtmlをホストしていますか?こちらをご覧ください:http://jasonkelly.net/2009/05/using-jquery-jsonp-for-cross-domain-ajax-with-wcf-services/ – albertjan
私はIIS上でサービスをホストしましたが、テスト用のWebサイトはVisual Studio Development Server上で実行しています。 – ukraine
それで、あなたは同じサイトの両方でそれらをホストすべきです。 XMLHttpRequestを使用したい場合は、XMLHttpRequestを有効範囲外に開くことが許可されていないためです。これは、XSS攻撃を防ぐためです。別のサイトからの依頼を使用したい場合は、jsonpのようなものを使用しなければなりません(前に投稿したように参照してください)。 – albertjan