Javascript 使用POST从ajax获取数据
现在我被一个问题困住了。我想这是一件非常基本的事情。但是在做了几个小时的研究之后,如果有人能给我一个快速的建议,那就太好了。 因此,我试图从我的api(C#)调用我的PUT方法 当我按下按钮时,它被调用。按钮功能如下:Javascript 使用POST从ajax获取数据,javascript,c#,ajax,rest,Javascript,C#,Ajax,Rest,现在我被一个问题困住了。我想这是一件非常基本的事情。但是在做了几个小时的研究之后,如果有人能给我一个快速的建议,那就太好了。 因此,我试图从我的api(C#)调用我的PUT方法 当我按下按钮时,它被调用。按钮功能如下: <script> function sendData() { $.ajax({ url: '/api/values', type: 'POST', data: {'id':"100014"}, d
<script>
function sendData() {
$.ajax({
url: '/api/values',
type: 'POST',
data: {'id':"100014"},
dataType: 'json',
contentType: 'application/json',
});
}
函数sendData(){
$.ajax({
url:“/api/values”,
键入:“POST”,
数据:{'id':“100014”},
数据类型:“json”,
contentType:'应用程序/json',
});
}
如果我调用GET方法,一切正常。但是尝试调用POST方法时,它只返回HTTP POST不支持该资源。
我和邮递员一起测试了这个方法。这里的Post方法有效。
但我不想将这些数据传递到Url中,而是从Ajax传递到数据中
如果有人能帮我,那就太好了
编辑:
我刚试过一些东西。我的最终结果是:
[HttpPost]
public async Task<IHttpActionResult> Post(int id)
{
var rawMessage = await Request.Content.ReadAsStringAsync();
return Ok(rawMessage);
}
[HttpPost]
公共异步任务发布(int-id)
{
var rawMessage=wait Request.Content.ReadAsStringAsync();
返回Ok(原始消息);
}
这对我来说很好 应该使用JSON.stringify()将JavaScript对象转换为字符串。 您可以像这样在脚本中修改您的方法
<script>
function sendData() {
var obj = { id:'100014'};
$.ajax({
url: '/api/values',
type: 'POST',
data: JSON.stringify(obj),
dataType: 'json',
contentType: 'application/json',
success: function(data) {
alert(data);
}
});
}
</script>
函数sendData(){
var obj={id:'100014'};
$.ajax({
url:“/api/values”,
键入:“POST”,
数据:JSON.stringify(obj),
数据类型:“json”,
contentType:'应用程序/json',
成功:功能(数据){
警报(数据);
}
});
}
顺便说一句,我看你的路线不对。应该是
/api/post
问题是找不到您的路线。
试一试
您甚至可以在控制器类之前添加:
[RoutePrefix("api/values")]
然后用你的名字来称呼它
url: '/api/values/getValues',
请检查是否引用了正确的库 如果您使用的是
System.Web.Mvc
,则可能会出现此问题。尝试删除它并引用System.Web.Http
希望这能解决您的问题。您应该使用
Ok()
方法包装输出。差不多
使用returm类型作为IHttpActionResult
[HttpPost]
public IHttpActionResult Post(String id)
{
return Ok(id);
}
数据会自动字符串化,问题与数据无关。如果OP使用GET而不是POST,它就会工作。@Archer我添加了JSON.stringify(obj)并且我的测试工作正常。我不明白你为什么否决我的答案???你不必为Ajax调用严格化数据。你需要在视图中显示更多信息。在控制器中,您需要保存更改。请尝试将处理程序的签名更改为此
publicstringpost([FromBody]stringid)
我不是C#背景,但我看到您正在尝试发送json数据并捕获字符串。允许吗?尝试只发送id值。如数据:“100014”
。您可能还需要更改contentType和dataType。dataType:'json',
删除此项,因为您不发送任何json。您可能会使用数据类型:'text',
@Archer如果您错了。我做了一个测试,没有你的[FromBody],方法仍然被调用。不要只点击“下一步”按钮,随意选择其他答案。我的解决方案适用于我的测试。
url: '/api/values/getValues',
[HttpPost]
public IHttpActionResult Post(String id)
{
return Ok(id);
}