insertItem

时间:2017-07-18 15:04:57

标签: jquery json http grid jsgrid

我让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之前控制项目对象,它会正确显示数字字段。例如:

data before post: {"question":"My Question","value":45,"timeout":10, "isActive":true }

但是在done函数console.log中,json看起来如下,这也正是它在服务器上的接收方式:

done: {"question":"My Question","value":"45","timeout":"10", "isActive":"true"}

如果我使用邮递员并发布正确的json对象,一切都很好,数据类型应该是这样,所以我的API没有错。 api响应也会在收到json对象时返回它。

不知何故,jsgrid在发布到我的API之前将所有属性值转换为字符串。这真令人讨厌。

更新 即使我尝试替换数据:项目:

data: {"question":"myquestio77", "value": 77}

我的API仍然收到77作为" 77"。

1 个答案:

答案 0 :(得分:0)

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

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

data: JSON.stringify(data), 
contentType: 'application/json'