gpt4 book ai didi

javascript - jQuery AJAX 发布到 MVC Controller 对象——请求显示为空

转载 作者:数据小太阳 更新时间:2023-10-29 04:22:01 25 4
gpt4 key购买 nike

我知道我在这里遗漏了一些细节。

问题

尽管使用谷歌搜索、尝试示例、不同的格式等,我发送的 AJAX 请求始终被验证为所有字段为空,但不为空。

我认为我没有以正确的格式发送内容,以便 Controller 将其识别为对象,但我不确定是什么。

Fiddler:我的请求是什么样的

使用一些虚拟数据:

enter image description here

代码:模型类

public class ContactUsMessage
{
public string Email { get; set; }
public string Name { get; set; }
public string PhoneNumber { get; set; }
public string Message { get; set; }
}

代码:WebAPI Controller

    [HttpPost]
public HttpResponseMessage NewMessage(ContactUsMessage messageToSend)
{
if (messageToSend == null)
{
var sadResponse = Request.CreateResponse(HttpStatusCode.BadRequest, "Empty Request");
return sadResponse;
}

var messageValidator = new ContactUsMessageValidator();
var results = messageValidator.Validate(messageToSend);
var failures = results.Errors;
var sadString = "";
if (!results.IsValid)
{
foreach (var error in failures)
{
sadString += " Problem: " + error.ErrorMessage;
}
var sadResponse = Request.CreateResponse(HttpStatusCode.NotAcceptable, "Model is invalid." + sadString);
return sadResponse;

}
else
{
SendContactFormEmail(messageToSend.Email, messageToSend.Name, messageToSend.PhoneNumber, messageToSend.Message);

}

代码:页面上的 JavaScript

function sendSubmissionForm() {

var dataObject = JSON.stringify(
{
messageToSend: {
'Email': $('#inpEmail').val(),
'Name': $('#inpName').val(),
'PhoneNumber': $('#inpPhone').val(),
'Message': $('#inpMessage').val()
}
});

$.ajax({
url: '/api/contactus/newmessage',
type: 'POST',
done: submissionSucceeded,
fail: submissionFailed,
data: dataObject

});


}

最佳答案

当您对数据对象进行 JSON.stringify 化时,您将其转换为 JSON。但是您忘记设置 Content-Type 请求 header ,Web API 无法知道您发送的是 JSON、XML 还是其他内容:

$.ajax({
url: '/api/contactus/newmessage',
type: 'POST',
contentType: 'application/json',
done: submissionSucceeded,
fail: submissionFailed,
data: dataObject
});

此外,在构建 JSON 时,您不需要将其包装在与您的方法参数名称匹配的附加属性中。以下内容也应该有效:

var dataObject = JSON.stringify({
'Email': $('#inpEmail').val(),
'Name': $('#inpName').val(),
'PhoneNumber': $('#inpPhone').val(),
'Message': $('#inpMessage').val()
});

关于javascript - jQuery AJAX 发布到 MVC Controller 对象——请求显示为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17769008/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com