SORU
8 EKİM 2013, Salı


AngularJs $http.() post veri göndermez

Herkes aşağıdaki beyanı belirlenen URL'ye post veri göndermez neden bana söyleyebilir saçımı çekerek oldum? Url ama $_POST boş bir dizi olsun ben yazdırma sunucusu olarak adlandırılır. Eğer veri eklemeden önce konsol içinde mesaj yazdırma - doğru içeriğini gösterir.

$http.post('request-url',  { 'message' : message });

Ayrıca veri olarak dize (aynı sonuç) ile denedim:

$http.post('request-url',  "message="   message);

Aşağıdaki biçimde kullandığımda işe yarıyor gibi görünüyor

$http({
    method: 'POST',
    url: 'request-url',
    data: "message="   message,
    headers: {'Content-Type': 'application/x-www-form-urlencoded'}
});

ama orada http dolar ile bunu yapmanın bir yoludur.() post - ve her zaman işe yaraması için başlık eklemek zorunda mıyım? Yukarıdaki içerik türünü gönderilen veri biçimini belirtme olduğuna inanıyorum, ama ben javascript nesnesi olarak gönderebilir mi?

CEVAP
29 Kasım 2013, Cuma


Aynı sorun asp.net MVC kullanarak yaptım ve found the solution here

Yeni gelenler arasında çok karışıklık varAngularJSolarak neden $http servis steno fonksiyonları ($http.post(), vb.) görünmüyor ile birlikte gelirbir WordPress kullanmakbenzerleri (jQuery.post(), vb.)

Farkı ne kadarbir WordPress kullanmakveAngularJSseri hale getirmek ve veri iletimi. Temelde sorun, seçim sunucu dili ile AngularJS iletim doğal olarak ... varsayılan olarak anlamak, edememesi yatıyorbir WordPress kullanmakiletir kullanarak veri

Content-Type: x-www-form-urlencoded

ve foo=bar&baz=moe tanıdık hale getirme.

AngularJSancak, kullanarak veri gönderir

Content-Type: application/json 

15**

Ne yazık ki bazı Web sunucusu, JSON seri hale getirme, dillerözellikle PHP—yok unserialize doğal olarak.

Bir cazibe gibi çalışır.

KOD

// Your app's root module...
angular.module('MyModule', [], function($httpProvider) {
  // Use x-www-form-urlencoded Content-Type
  $httpProvider.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded;charset=utf-8';

  /**
   * The workhorse; converts an object to x-www-form-urlencoded serialization.
   * @param {Object} obj
   * @return {String}
   */ 
  var param = function(obj) {
    var query = '', name, value, fullSubName, subName, subValue, innerObj, i;

    for(name in obj) {
      value = obj[name];

      if(value instanceof Array) {
        for(i=0; i<value.length;   i) {
          subValue = value[i];
          fullSubName = name   '['   i   ']';
          innerObj = {};
          innerObj[fullSubName] = subValue;
          query  = param(innerObj)   '&';
        }
      }
      else if(value instanceof Object) {
        for(subName in value) {
          subValue = value[subName];
          fullSubName = name   '['   subName   ']';
          innerObj = {};
          innerObj[fullSubName] = subValue;
          query  = param(innerObj)   '&';
        }
      }
      else if(value !== undefined && value !== null)
        query  = encodeURIComponent(name)   '='   encodeURIComponent(value)   '&';
    }

    return query.length ? query.substr(0, query.length - 1) : query;
  };

  // Override $http service's default transformRequest
  $httpProvider.defaults.transformRequest = [function(data) {
    return angular.isObject(data) && String(data) !== '[object File]' ? param(data) : data;
  }];
});

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • George McCarron

    George McCar

    29 Mayıs 2013
  • Google Chrome

    Google Chrom

    1 EYLÜL 2008
  • WK

    WK

    9 Ocak 2006