我让 jsGrid 为完整的 CRUD 操作工作,但是当我添加新记录时,post 方法会以某种方式将我的所有字段转换为字符串,然后再传输到我的 API。我的 API 将所有字段作为字符串接收,无论它们是字符串、数字还是布尔值。
这是我的 insertItem 函数:
console.log( "data before post: " + JSON.stringify(item) );
insertItem: function (item) {
var d = $.Deferred();
$.ajax({
type: "POST",
url: "https://myserver...",
data: item,
dataType: "json",
}).done(function (response) {
console.log( "done: " + JSON.stringify(response) );
d.resolve(response);
}).fail(function( msg ) {
console.log( "fail" + msg );
d.reject();
});
}
如果我在 $.ajax 之前 console.log 项目对象,它会正确显示数字字段。例如:
data before post: {"question":"My Question","value":45,"timeout":10, "isActive":true }
但是在完成的函数console.log中,json看起来如下,这也正是它在服务器上被接收到的方式:
done: {"question":"My Question","value":"45","timeout":"10", "isActive":"true"}
如果我使用邮递员并发布正确的 json 对象,一切都很好,数据类型也应如此,所以我的 API 没有错误。api 响应还返回接收到的 json 对象。
不知何故,jsgrid 在发布到我的 API 之前将所有属性值转换为字符串。这真的很烦人。
更新: 即使我尝试将 data:item 替换为:
data: {"question":"myquestio77", "value": 77}
我的 API 仍将 77 接收为“77”。