0

我让 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”。

4

1 回答 1

0

我在这里找到了答案: https ://stackoverflow.com/a/34628133/679439

基本上,您必须在发送数据之前对数据进行字符串化,当然还要添加我缺少的内容类型。你必须两者都做。

data: JSON.stringify(data), 
contentType: 'application/json'
于 2017-07-18T15:59:53.067 回答