我有jQuery wcf方法從aspx頁面與jQuery的問題。通過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");
}
}
此服務部署到IIS。 當我從Chrome調用此方法時:http://localhost/TestService/ServiceImpl.svc/Test 一切都很好,我可以看到結果。但是,當我從jQuery 調用它時,我有錯誤:NETWORK_ERR:XMLHttpRequest異常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上託管服務,但是我的測試網站在Visual Studio Development Server上運行。 – ukraine
你好,你應該在同一個網站上託管它們。如果你想使用XMLHttpRequest,因爲它不允許打開它的範圍。這是爲了防止XSS攻擊。如果你想從一個不同的網站使用追索權,你將不得不使用類似jsonp的東西(請參閱我以前發佈的內容)。 – albertjan