2017-07-18 20 views
0

私は完全なCRUD操作のためにjsGridを使用していますが、新しいレコードを追加すると、postメソッドは何とか自分のフィールドを文字列に変換してからAPIに転送します。私のAPIは、文字列、数字、またはboolのいずれであっても、すべてのフィールドを文字列として受け取ります。ここでinsertItemのjsGridの問題

は私の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(); 
      }); 
     } 

私は$アヤックス前にアイテムオブジェクトを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に投稿する前に、すべてのプロパティ値を文字列に変換しています。これは本当に面倒です。

更新: 私は、データを交換してみた場合でも:77がまだ "77" としての私のAPIによって受信され

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

:でアイテムを。

答えて

0

私はここで答えを見つけました:https://stackoverflow.com/a/34628133/679439

は基本的に、あなたはそれを送信する前にデータを文字列化する必要がある。もちろん、私が行方不明になったContentTypeをを追加します。あなたは両方をしなければなりません。

data: JSON.stringify(data), 
contentType: 'application/json' 
関連する問題