我正在尝试使用ajax进行API调用:
svc.authenticateAdmin = function (id, code) {
$.ajax({
url: 'api/event/authenticate',
data: { 'id': id, 'code': code },
datatype: 'json',
contentType: 'application/json',
type: 'GET',
success: function (data) {
App.eventBus.publish('authenticationComplete', data);
}
});
};
API控制器中的方法:
[ActionName("All")]
public bool Authenticate(int id, string code)
{
var repo = new MongoRepository<Event>(_connectionString);
var entry = repo.FirstOrDefault(e => e.Id == id);
return entry.AdminPassword == code;
}
但我收到404错误:urlstuff / api / event / authenticate?id = 123&amp; code = abc 404(Not Found)
我已经从许多已知的工作调用中复制了实现(我没有写过)。看起来像:
svc.getEventFromCode = function (code) {
$.ajax({
url: '/api/event/',
data: { 'code': code },
dataType: 'json',
type: 'GET',
success: function (data) {
App.eventBus.publish('loadedEvent', data);
App.eventBus.publish('errorEventCodeExists');
},
error: function () {
App.eventBus.publish('eventNotFound', code);
}
});
};
和
svc.getEventPage = function (pageNumber) {
$.ajax({
url: '/api/event/page/',
data: { 'pageNumber': pageNumber },
dataType: "json",
contentType: "application/json",
type: 'GET',
success: function (data) {
App.eventBus.publish('loadedNextEventsPage', data);
}
});
};
但两者都不必将2个参数传递给API。我猜它是非常小的东西:/
答案 0 :(得分:1)
您的操作名称称为“身份验证”,但您已包含以下重命名操作的内容:
[ActionName("All")]
这会产生网址
/api/event/all
答案 1 :(得分:0)
问题在于您的url
。
显然,ajax在网址开头解释/
为root
当应用程序部署在serverserver上时,其URL类似于http://localhost:8080/AppName/
api/event/page/
,ajax将网址解析为http://localhost:8080/AppName/api/event/page/
或相对于当前目录的网址。
但是,对于/api/event/page/
,网址已解析为http://localhost:8080/api/event/page/
希望它有所帮助。