У меня есть служба ASP.NET Ajax, настроенная с использованием WebSriptServiceHostFactory в файле * .svc - без конфигурации web.config. В контракте я начинаю с двух очень простых методов:
[OperationContract()]
[WebGet]
string GetPersonalInformationLabel();
[OperationContract()]
[WebGet]
string GetCorporateInformationLabel();
И моя настройка jQuery выглядит следующим образом:
$.ajaxSetup({
type: "POST",
data: "{}",
contentType: "application/json; charset=utf-8",
dataType: "json",
dataFilter: function(data){
var msg;
if( typeof(JSON) !== 'undefined' &&
typeof(JSON.parse) === 'function')
msg = JSON.parse(data);
else
msg = eval('(' + data + ')');
if(msg.hasOwnProperty('d'))
return msg.d;
else
return msg;
}
});
$("#chkCorporateGift").click(function(){
if($(this).is(":checked")){
$.ajax({
type: "GET",
url: "http://localhost/Services/OG.svc/GetCorporateInformationLabel",
success: function(msg){
$("#lblInformationType").text(msg);
}
});
}
else {
$.ajax({
type: "GET",
url: "http://localhost/Services/OG.svc/GetPersonalInformationLabel",
success: function(msg){
$("#lblInformationType").text(msg);
}
});
}
});
Как вы можете видеть, ajaxSetup назначает тип по умолчанию "POST", но мне пришлось переопределить его с помощью "GET" в моих двух вызовах ниже, поскольку я получал "405 Method Not Allowed", вероятно, потому что контракт использует Атрибут WebGet] для обоих методов
Так что теперь, когда сообщение 405 пропало, я продолжаю и вызываю два метода прямо в моем браузере, и они возвращают ожидаемые результаты. Однако ничего не возвращается, когда эти два метода вызываются с помощью кода jQuery, который я настроил выше. Есть идеи, что я делаю не так?