2017-01-27 7 views
1

AngularJS HTTP POSTを引き起こす番号にAngularJS HTTP POSTを日時を日時変換

を数値を引き起こす我々は、データが以下のようにJSONオブジェクトであることを特徴とする請求単純

$http.post(URL, data); 

はまた

$http({ 
         method: 'POST', 
         url: "/URL/", 
         data: dataField, 
         headers: { 
             'Content-Type': 'application/x-www-form-urlencoded' 
         }}).then(function(result) { 
             console.log(result); 
         }, function(error) { 
             console.log(error); 
         }); 

を試してみました:

{ 
    name: 'Test', 
    orderno: '19801212' 
    date: '20170101' 
} 

$ http postは、ordernoフィールドを日付時刻形式に変換してWeb APIに送信しています。これは意図していない使い方です.jsonをc#webapi側のオブジェクトとして逆シリアル化するためです。実際のクライアントサイドリクエストを調べると、$ http postがこれを内部的に行っていることに気付きました。

文字列フィールドのdatetimeへの自動変換を回避する方法を知っていますか?

ありがとうございます。

答えて

0

使用:'のContent-Type':コード以下は、 'アプリケーション/ jsonの'

$http({ 
     method: 'POST', 
     url: "/URL/", 
     data: dataField, 
     headers: { 
      'Content-Type': 'application/json' 
     }}).then(function(result) { 
      console.log(result); 
     }, function(error) { 
      console.log(error); 
     }); 
+0

culprit-ました。それはうまくいかなかった。 –

0

は、我々はそれも使用

angular.module('app').config(["$httpProvider", function ($httpProvider) { 
    $httpProvider.defaults.transformResponse.push(function (responseData) { 
     convertDateStringsToDates(responseData); 
     return responseData; 
    }); 
}]); 


var regexIso8601 = /^([\+-]?\d{4}(?!\d{2}\b))((-?)((0[1-9]|1[0-2])(\3([12]\d|0[1-9]|3[01]))?|W([0-4]\d|5[0-2])(-?[1-7])?|(00[1-9]|0[1-9]\d|[12]\d{2}|3([0-5]\d|6[1-6])))([T\s]((([01]\d|2[0-3])((:?)[0-5]\d)?|24\:?00)([\.,]\d+(?!:))?)?(\17[0-5]\d([\.,]\d+)?)?([zZ]|([\+-])([01]\d|2[0-3]):?([0-5]\d)?)?)?)?$/ 

function convertDateStringsToDates(input) { 
    // Ignore things that aren't objects. 
    if (typeof input !== "object") return input; 

    for (var key in input) { 
     if (!input.hasOwnProperty(key)) continue; 

     var value = input[key]; 
     var match; 
     // Check for string properties which look like dates. 
     if (typeof value === "string" && (match = value.match(regexIso8601))) { 
      var milliseconds = Date.parse(match[0]) 
      if (!isNaN(milliseconds)) { 
       input[key] = new Date(milliseconds); 
      } 
     } else if (typeof value === "object") { 
      // Recurse into object 
      convertDateStringsToDates(value); 
     } 
    } 
} 
;