Я пытаюсь научиться программировать веб-сервис с ServiceStack и называть его через ajax в JavaScript. Я сделал это, наблюдая за фильмами с множественным числом изображений, и я думаю, что я почти понял, как это сделать, кроме передачи данных в качестве параметров с помощью служебного вызова.
Я пытаюсь вызвать службу с этим Ajax-вызов:
var request = { };
request.Amount = 32;
$.ajax({ type: 'POST',
contentType: 'application/jsonp; charset=utf-8',
url: "http://localhost:1879/entry",
dataType: 'jsonp',
data: {request: request},
success: function(result){
alert(result.Id);
}});
Служба выглядит следующим образом:
public class EntryService : Service
{
public object Post(Entry request)
{
return new EntryResponse() { Id = request.Amount };
}
}
[Route("/entry", "POST")]
public class Entry
{
public int Amount { get; set; }
}
public class EntryResponse
{
public int Id { get; set; }
}
Я ожидаю, что предупреждение в обратный вызов, чтобы показать номер 32, но он показывает число 0. И когда я отлаживаю свою службу, я вижу, что request.Amount равно 0, поэтому я думаю, что я делаю что-то неправильно в вызове службы Ajax, но я не могу понять, что. Поэтому мне интересно, что я делаю неправильно здесь.
ли вы настроите ваш сервис, чтобы быть совместимым с JSONP в JQuery? Вы знаете, что обработчик обратного вызова имеет определенное имя и т. Д. – adrian
Две вещи, которые нужно попробовать: 1) попробуйте изменить данные: {запрос: запрос} на данные: запрос 2), если вам нужно jsonp добавить SetConfig (новый EndpointHostConfig {AllowJsonpRequests = true}); к вашему AppHost (https://github.com/ServiceStack/ServiceStack/wiki/Configuration-options) – paaschpa
(В ответ на ваш удаленный ответ) Возможно, вы слишком усложняете вещи? То, что вы пытаетесь сделать, совсем не сложно. Я вернусь к более старым техникам и попробую попробовать asmx или page methods. Они работают с jQuery.Кстати, вам не нужен другой порт для веб-службы. –