【发布时间】:2018-08-12 07:51:06
【问题描述】:
我遇到了这个问题,我想不通。我正在使用 ASP.NET Core 2 和 Ajax。
这是 JavaScript 调试器所说的:
XML 解析错误:找不到根元素位置: http://localhost:52617/api/favorites/ 第 1 行第 1 列:
这是我的 JavaScript 代码:
$(".js-toggle-fav").click(function (e) {
function sendPost() {
console.log("inside post send");
var button = $(e.target);
$.ajax({
type: 'POST',
url: "http://localhost:52617/api/Favorites/",
data: {"EventId": @Model.Event.EventId},
contentType: "application/json; charset=utf-8"
});
}
$.getJSON("http://localhost:52617/api/favorites/@Model.Event.EventId", function (data) {
if (data == null) {
console.log("fav is null");
sendPost();
fav.addClass(toggling);
fav.text("unfav");
}
else {
console.log("fav is NOT null");
sendPost();
fav.removeClass(toggling);
fav.text("fav");
}
);
});
还有我的 API:
[HttpPost]
public async Task<IActionResult> PostFavorite([FromBody] FavoriteDto favorite)
{
if (!ModelState.IsValid)
{
Console.WriteLine(ModelState.ValidationState.ToString());
return BadRequest(ModelState);
}
var uid = _userManager.GetUserId(HttpContext.User);
var fav = await _context.Favourites.SingleOrDefaultAsync(x => x.EventId == favorite.EventId && x.UserId == uid);
if (fav == null)
{
_context.Favourites.Add(new Favorite { EventId = favorite.EventId, UserId=uid });
}
else
{
_context.Favourites.Remove(fav);
}
try
{
await _context.SaveChangesAsync();
}
catch (DbUpdateException)
{
if (FavoriteExists(favorite.EventId))
{
return new StatusCodeResult(StatusCodes.Status409Conflict);
}
else
{
throw;
}
}
return Ok(favorite);
}
当我使用 Postman 或任何其他客户端执行此操作时,一切都像魅力一样!对于 Ajax,情况并非如此。
注意事项:
- 在同一个
.cshtml文件中,有更多的 jQuery 和 JavaScript 代码可以执行类似的操作,并且可以正常工作!所有解决方案 很遗憾,我上网查了一下,没有用。- Get 方法(用于返回 List 或单个元素正在工作!)
【问题讨论】:
标签: ajax asp.net-mvc asp.net-core asp.net-core-mvc