无法让 POST 在 jQuery AJAX/Web API 中工作 - 参数始终为空
Can't get POST to work in jQuery AJAX/Web API - parameter always null
我似乎无法对复杂类型进行绑定。我已经尝试了这里关于 SO 的大部分建议,但似乎无法使其发挥作用。参数始终为空。
function createFile(filename, x, y, width, height) {
var image = {
Filename: filename,
X: x,
Y: y,
Width: width,
Height: height
};
$.ajax({
type: "POST",
url: Server.Domain() + "media/createFile",
data: JSON.stringify(image),
dataType: "json",
contentType: "application/json; charset=utf-8",
success: function (result) {
alert('success');
},
error: function (xhr, err) {
//
}
});
}
和 Web API 方法:
[Route("api/media/createFile")]
[HttpPost]
public bool CreateFile(ItemDto item)
{
bool success = false;
try
{
//
}
catch (Exception ex)
{
throw ex;
}
return success;
}
和类型:
public class ItemDto
{
public string Filename { get; set; }
public int X { get; set; }
public int Y { get; set; }
public int Width { get; set; }
public int Height { get; set; }
}
Web API 被调用,但 'item' 参数始终为空。我尝试添加 FromBody,删除内容类型(有些人说它不应该存在,但我认为不应该是这种情况,因为我正在通过 JSON),但仍然无济于事。
编辑:
这是发送的内容
"{"Filename":"30.jpg","X":29.999999999999993,"Y":29.999999999999993,"Width":240.00000000000003,"Height":240.00000000000003}" =19=]
更新:
将 JavaScript 对象更改为此绑定成功:
var image = {
Filename: "a",
X: "1",
Y: "2",
Width: "3",
Height: "4"
};
发送的值为
"{"Filename":"a","X":"1","Y":"2","Width":"3","Height":"4"}"
我的原始值有问题吗?
更新 2:
我将 X 更改为 1.1111111111 并使用和不使用双引号进行了测试。参数不为 null 但 X 在 Web 中等于零 API.
事实证明,数据类型错误:
public class ItemDto
{
public string Filename { get; set; }
public int X { get; set; }
public int Y { get; set; }
public int Width { get; set; }
public int Height { get; set; }
}
我发送的是带小数点的数字。将数据类型更改为十进制修复了问题。
我似乎无法对复杂类型进行绑定。我已经尝试了这里关于 SO 的大部分建议,但似乎无法使其发挥作用。参数始终为空。
function createFile(filename, x, y, width, height) {
var image = {
Filename: filename,
X: x,
Y: y,
Width: width,
Height: height
};
$.ajax({
type: "POST",
url: Server.Domain() + "media/createFile",
data: JSON.stringify(image),
dataType: "json",
contentType: "application/json; charset=utf-8",
success: function (result) {
alert('success');
},
error: function (xhr, err) {
//
}
});
}
和 Web API 方法:
[Route("api/media/createFile")]
[HttpPost]
public bool CreateFile(ItemDto item)
{
bool success = false;
try
{
//
}
catch (Exception ex)
{
throw ex;
}
return success;
}
和类型:
public class ItemDto
{
public string Filename { get; set; }
public int X { get; set; }
public int Y { get; set; }
public int Width { get; set; }
public int Height { get; set; }
}
Web API 被调用,但 'item' 参数始终为空。我尝试添加 FromBody,删除内容类型(有些人说它不应该存在,但我认为不应该是这种情况,因为我正在通过 JSON),但仍然无济于事。
编辑:
这是发送的内容 "{"Filename":"30.jpg","X":29.999999999999993,"Y":29.999999999999993,"Width":240.00000000000003,"Height":240.00000000000003}" =19=]
更新:
将 JavaScript 对象更改为此绑定成功:
var image = {
Filename: "a",
X: "1",
Y: "2",
Width: "3",
Height: "4"
};
发送的值为
"{"Filename":"a","X":"1","Y":"2","Width":"3","Height":"4"}"
我的原始值有问题吗?
更新 2:
我将 X 更改为 1.1111111111 并使用和不使用双引号进行了测试。参数不为 null 但 X 在 Web 中等于零 API.
事实证明,数据类型错误:
public class ItemDto
{
public string Filename { get; set; }
public int X { get; set; }
public int Y { get; set; }
public int Width { get; set; }
public int Height { get; set; }
}
我发送的是带小数点的数字。将数据类型更改为十进制修复了问题。