2016-08-18 72 views
0

我正面臨角度$資源服務的問題。

我試圖以不同的方式使用某些表單數據創建REST API。

但是每次我點擊API時,我最終都會在QueryParams或Request Payload中發送數據。

我實際上需要以編碼形式發送數據。

我的代碼看起來如下:

var headers = { 
      'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8' 
     }; 


var save = function (url, params, headers, successcb, successParams, errorcb, errorParams) { 
      var promise = $resource(url, null, { 
       upload: { 
        method: methodPost, 
        headers: headers 
       } 
      }).save({}, params).$promise; 

      promise.then(function (response) { 
       successcb(response.data, successParams); 
      }, function (error) { 
       errorcb(error, errorParams); 
      }); 
     }; 

我已附加的角AJA​​X請求的快照。

enter image description here

參考上述圖像,內容類型實際上表示應用/ JSON雖然我已經設置的X WWW窗體-urlencoded。因此,數據將在RequestPayload而不是FormData中傳出。

下面是jQuery ajax調用的更多圖片。

enter image description here

在這裏,你可以清楚地看到,內容類型爲X WWW的形式,進行了urlencoded,它是工作的罰款。

我的疑惑在於,$ resource沒有發送正確的標題,因爲數據以RequestPayload的形式發送。

有沒有人遇到過這個問題?

任何幫助表示讚賞。

謝謝

回答

0

您可以使用轉換請求,如下所示。

var transform = function(data) { 
     return $.param(data); 
    } 

    var headers = { 
     'Content-Type' : 'application/x-www-form-urlencoded;charset=UTF-8' 
    }; 

    var save = function(url, params, headers, successcb, successParams, errorcb, errorParams) { 
     var promise = $resource(url, null, { 
      upload : { 
       method : methodPost, 
       headers : headers, 
       transformRequest : transform 

      } 
     }).save({}, params).$promise; 

     promise.then(function(response) { 
      successcb(response.data, successParams); 
     }, function(error) { 
      errorcb(error, errorParams); 
     }); 
    }; 
0

這是由於在$http服務$resoucetransformRequest方法取決於其始終將Content-Typeapplication/json

要糾正這種情況,您需要禁用它或將其更改爲使用將規格設置爲您所需的功能。

就在這裏好文章:http://www.bennadel.com/blog/2615-posting-form-data-with-http-in-angularjs.htm

嘗試:

var promise = $resource(url, null, { 
    upload: { 
     method: methodPost, 
     headers: headers, 
     transformRequest: []   
    }, 
}).save({}, params).$promise; 
+0

感謝。在發佈問題之前,我嘗試了transformRequest。但它不適合我 –

相關問題