У меня есть простой веб-метод в приложении asp.net 2.0 (с использованием расширений 1.0, а не расширений 3.5 ajax). Я пытаюсь вызвать метод из jQuery, и когда я делаю это, как показывают многочисленные примеры в Интернете и здесь, в SO, я получаю сообщение об ошибке Internal Server Error.
Вот мой текущий код:
[WebMethod]
[ScriptMethod(ResponseFormat=ResponseFormat.Json)]
public string Select(string login)
{
UserProfile profile = UserProfile.GetUserProfile(login);
return "{ FirstName: '" + profile.FirstName + "', " +
"LastName: '" + profile.LastName + "', " +
"EmailAddress: '" + profile.EmailAddress + "', " +
"PhoneNumber: '" + profile.PhoneNumber + "' }";
}
А теперь jquery:
$.ajax({
type: "POST",
url: "Services/ProfileService.asmx/Select",
dataType: "json",
data: "{'login':'DOMAIN%5CUSER1'}",
contentType: "application/json; charset=utf-8",
success: function(msg){ alert(msg); },
error: function(xhr){ alert(xhr.statusText);}
});
Веб-сервис также имеет атрибут [ScriptService]
. Если я закомментирую contentType, изменит dataType на text и изменит данные на строку запроса (name = value), я получу XML, возвращенный соответствующим образом.
Где я иду не так?
UPDATE:
Я использую jQuery v1.3.1 и тестирую как в IE6, так и в Firefox 3. Я получаю согласованные результаты.