Ajax POST 请求 - 400 错误请求 - 格式不正确的语法
Posted
技术标签:
【中文标题】Ajax POST 请求 - 400 错误请求 - 格式不正确的语法【英文标题】:Ajax POST Request - 400 Bad Request - Incorrectly Formatted Syntax 【发布时间】:2021-12-11 03:37:03 【问题描述】:我正在 MVC Web 应用程序中进行开发,我正在努力创建从网格中删除数据的功能。简而言之,我目前正在为显示的表格中的每一行呈现一个编辑和删除按钮,单击删除按钮将调用下面的delete
函数。该函数构造并打开一个Bootstrap modal,显示一条确认消息和两个按钮,一个用于确认删除过程,另一个用于取消和关闭该modal。然后我在delete
按钮上开发了一个click
事件,理论上应该完成对DeleteRecord
控制器的DeleteRecord
方法的Ajax POST 请求。问题涉及请求的响应,该响应似乎总是返回400 - Bad Request
,我认为这是由于语法格式不正确,但在我的测试中我无法解决这个问题。
我之前已将方法更改为 GET 而不是 POST,它正确到达目标方法并返回状态码 200,在我的研究中,我还注意到JSON.stringify()
的使用以及我的控制器方法期望的事实string/int 参数,而我相信我正在发送一个复合对象。我尝试了以下代码的变体,但没有成功。
删除函数(从网格调用):
function delete(id, entityObject, masterRecordEntityObject)
var dialogTitle;
dialogTitle = "Delete Item?";
var data = "<div class='modal-header'>";
data += "<h4 class='modal-title'>" + dialogTitle + "</h4>";
data += "<button type='button' class='close' data-dismiss='modal' aria-label='Close'>";
data += "<span aria-hidden='true'>×</span>";
data += "</button>";
data += "</div>";
data += "<div class='modal-body'>";
data += "<p><i class='fas fa-exclamation-triangle' style='float:left; margin:4px 7px 20px 0;'></i> Please click delete to confirm deletion.</p>";
data += "</div>";
data += "<div class='modal-footer'>";
data += "<a class='btn btn-danger' id='btnConfirmDelete'>Delete</a>";
data += "<button class='btn btn-primary' type='button' data-dismiss='modal'>Cancel</button>";
data += "</div>";
$('#myModalContent').html(data);
$('#myModal').modal('show');
点击事件:
$("#btnConfirmDelete").click(function ()
$.ajax(
url: '@Url.Action("DeleteRecord", "DynamicGrid")',
type: 'POST',
data:
"recordId": id,
"entityObject": entityObject,
"masterRecordEntityObject": masterRecordEntityObject
,
dataType: 'json',
contentType: 'application/json; charset=utf-8',
async: true,
error: function (xhr)
alert('Error: ' + xhr.statusText);
,
success: function (result)
alert(result);
,
);
);
DeleteRecord 方法(DynamicGridController):
[HttpPost]
public Task<IActionResult> DeleteRecord(int recordId, string entityObject, string masterRecordEntityObject)
// Code
return Content("OK");
任何帮助将不胜感激。
编辑:
这里的请求是来自开发者控制台的控制台/网络信息。
网络:
控制台:
【问题讨论】:
请检查控制台和网络选项卡(按 F12 或右键单击并选择检查元素)错误,如果没有收到该错误,请分享。 @MalvikBhavsar - 请查看添加的屏幕截图。谢谢 参考this link 【参考方案1】:您的 ajax 无法向操作发送任何参数,这可能会导致 400 错误。
尝试从您的 ajax 中删除此代码
contentType: 'application/json; charset=utf-8'
【讨论】:
以上是关于Ajax POST 请求 - 400 错误请求 - 格式不正确的语法的主要内容,如果未能解决你的问题,请参考以下文章
Ajax POST 请求 - 400 错误请求 - 格式不正确的语法