apicontroller不从阿贾克斯
问题描述:
让我得到“404未找到”做一个Ajax调用, 也许,我不知道如何路由作品...apicontroller不从阿贾克斯
function ApproveAlert(ID) {
$.ajaxPost('/api/DeviceApi/ApproveAlertNew', { 'ID': ID }, function (data) {
... get error "404 Not Found"
}, null);
}
我mvc4 C#应用程序
我有狂胜配置:
RouteTable.Routes.MapHttpRoute(
name: "defaultapiaction",
routeTemplate: "api/{controller}/{action}"
);
RouteTable.Routes.MapHttpRoute(
name: "defaultapiid",
routeTemplate: "api/{controller}/{action}/{id}"
);
和apicontroller:
public class DeviceApiController : ApiController
{
//
// GET: /DeviceApi/
[HttpPost]
public bool ApproveAlertNew(int ID)
{
..do
}
答
的Web API控制器不相同SENS使用 “操作” e MVC控制器。 Web API控制器也不会真正使用[HttpPost]
,[HttpGet]
属性。他们根据ApiControllers内部方法的名称分派请求。我建议阅读关于Web API与MVC差异的更多内容,因为它们很相似,但有时很难启动和运行......
下面是我为测试制作的Web API的一些非常通用的示例。我没有JavaScript发布到这个API,因为我是从.NET WPF应用发布的。你会张贴到 “/重要” NOT “/重要/邮报” 希望这将让你在正确的轨道上......
WebAPIConfig.cs(路线):
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web.Http;
namespace ArrayTest.WebAPI
{
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
}
}
}
API控制器:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Web.Http;
using ArrayTest.Models;
using System.Threading;
namespace ArrayTest.WebAPI.Controllers
{
public class ImportantController : ApiController
{
// POST api/important
public HttpResponseMessage Post(ImportantList values)
{
//manipulate values received from client
for (int i = 0; i < values.ImportantIDs.Count; i++)
{
values.ImportantIDs[i] = values.ImportantIDs[i] * 2;
}
//perhaps save to database, send emails, etc... here.
Thread.Sleep(5000); //simulate important work
//in my case I am changing values and sending the values back here.
return Request.CreateResponse(HttpStatusCode.Created, values);
}
}
}
型号:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ArrayTest.Models
{
public class ImportantList
{
public List<int> ImportantIDs { get; set; }
}
}
答
你可以尝试用:
function ApproveAlert(ID) {
$.ajax({
type: 'POST',
url: "/api/DeviceApi/ApproveAlertNew",
data: {
ID: ID
},
success: function (data) {
//Handle your success
},
error: function (jqXHR, textStatus, errorThrown) {
//Handle error
}
});
}
尝试使用'$ .post('/ api/DeviceApi/ApproveAlertNew?ID ='+ ID,{},函数(数据)' – nemesv 2013-03-03 16:13:18
我想要发布数据 – 2013-03-03 17:11:07