【发布时间】:2018-02-14 21:11:10
【问题描述】:
我已经构建了一个简单的 asp.net 项目,其中包含一个 webapi。我还有一个 html 页面,它向 webApi 发送 POST 请求,但它不能。它抛出错误
找不到与名为“api”的控制器匹配的类型。
代码:
WebApi:
namespace HimHer.Controllers
{
public class ImagesController : ApiController
{
basicoperations bo = new basicoperations();
public string Post([FromBody]Images imgs)
{
bo.Image = imgs.Image;
bo.Story = imgs.Story;
bool result = bo.insertImages(bo);
return result == true ? "Success" : "Failed";
}
}
public class Images
{
public int ID {get; set;}
public string Image { get; set; }
public string Story { get; set; }
}
}
Ajax 代码:
function save()
{
var images = {
Image: imgUploader.value,
Story: txtStory.value
};
var JsonImages = JSON.stringify(images);
$.ajax
({
url: '/api/Images',
type: 'POST',
contentType: "application/json; charset= utf-8",
data: JsonImages,
dataType: 'json',
success: function (results) {
alert(results);
$('#myModal').modal('hide');
}
});
}
ImagesController 存在于 Controllers 文件夹中。
【问题讨论】:
-
contentType: "application/json; charset= utf-8",。在这里,您告诉 ajax 和服务器您正在发送 JSON。var JsonImages = JSON.stringify(images);在这里您将数据转换为单个字符串,因此它不再是 JSON。我认为第二行是不必要的。 -
以上内容与您所说的问题没有直接关系,但我怀疑以后可能会证明是一个问题。同时尝试
api/Images(不带前导/),看看这是否有助于实际路径。并在您的网络选项卡中查看为请求生成的完整 URL 是否与您的 API 的正确 URL 匹配。 -
完成。我还认为您的响应可能有问题,因为您说的是
dataType: "json",但是 API 方法返回的是字符串而不是对象。 -
您的回答“这有效(...)”已被审核过程删除,因为它看起来不像是答案,而是像您的问题的一些附加信息。您可能需要重新输入您的答案并添加一些解释,以便它清楚地作为答案脱颖而出。
标签: jquery ajax post c#-4.0 asp.net-web-api