美元.ajax POST调用ServiceStack webservice,参数未到达
本文关键字:参数 webservice ajax POST 调用 ServiceStack 美元 | 更新日期: 2023-09-27 18:17:29
我正在尝试学习如何使用ServiceStack编程web服务,并通过JavaScript中的ajax调用它。我通过观看pluralsight电影做到了这一点,我想我几乎找到了如何做到这一点,除了通过服务调用将数据作为参数传递。
我尝试用这个ajax-call调用服务:
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。当我调试我的服务时,我看到了这个请求。Amount也为0,所以我认为我在Ajax服务调用中做错了什么,但我不知道是什么。我想知道我在这里做错了什么
Pluralsight课程的作者。希望我能帮到你。
你应该做的第一件事是确保API工作正常。
转到此:http://localhost:1879/entry
在您的web浏览器中,您应该看到显示了一个包含有关该服务的信息的页面。如果你不这样做,你的URL是错误的或ServiceStack配置错误。
假设URL是正确的,您所需要做的就是将数据包装在JSON.Stringify()中。当你写一篇文章时,数据必须是JSON格式的JSON字符串。您当前正在发送一个JSON对象。
另外,很可能您可以在$. url中去掉localhost位。Ajax调用,只做"entry"
你不能用JsonP写文章。如果您尝试跨域POST,您需要查看cors并确保您要发送到的服务已启用。
Post data to JsonP
我只使用jsonp,因为我阅读并希望它可以解决我的问题。但是根据你的解释,我不应该需要它,所以我把我的代码改成这样:
var request = { };
request.Amount = 32;
$.ajax({ type: 'POST',
contentType: 'application/json; charset=utf-8',
url: "http://localhost:1879/json/reply/Entry",
dataType: 'json',
data: request,
success: function(result){
alert(result.Id);
},
error: function(xhr, ajaxOptions, thrownError){
alert("Failure!");
alert(xhr.status);
alert(thrownError);
}});
首先,我有这个调用没有错误部分,什么也没有发生,没有警报,没有错误,什么都没有。所以我假设错误被消费而不是显示,所以我添加了错误回调,我的假设似乎是正确的。现在我收到3个警报,最后2个警报显示"400"answers"错误请求"。
我搜索了这些错误,并尝试了,但没有一个可能的解决方案,我发现解决了我的问题。我尝试了2个url:/json/reply/Entry和/Entry后的localhost部分,但两者都不起作用。那么我做错了什么呢?