SORU
30 AĞUSTOS 2012, PERŞEMBE


AngularJS - $http için Herhangi bir yol.JSON yerine gönderme isteği parametreleri post?

jQuery's post method ile AJAX POST isteği yapan bazı eski kodu var ve bu gibi görünür:

$.post("/foo/bar", requestData,
    function(responseData)
    {
        //do stuff with response
    }

requestData bazı temel string özellikleri ile sadece bir javascript nesnesidir.

Üzerinde eşyalarımızı Açısal kullanmak taşınma sürecindeyim, ve $http bu telefonu değiştirmek istiyorum.post. Ben aşağıdaki ile geldi:

$http.post("/foo/bar", requestData).success(
    function(responseData) {
        //do stuff with response
    }
});

Bunu yaptığım zaman, sunucu 500 hatası bir yanıt aldım. Firebug kullanarak, bu isteği bu şekilde vücudun gönderdiği buldum:

{"param1":"value1","param2":"value2","param3":"value3"}

Başarılı bir WordPress kullanmak $.post böyle vücuda gönderir

param1=value1¶m2=value2¶m3=value3

Basıyorum son nokta istek parametreleri bekliyor ve JSON. Benim sorum yok zaten $http.post JSON yerine parametreleri istek olarak javascript nesne gönderir söylemek için mi? Evet, dize kendimi nesneden yazabilirim biliyorum, ama eğer Açısal kutudan bunun için bir şey sağlar mı bilmek istiyorum.

CEVAP
30 AĞUSTOS 2012, PERŞEMBE


Bence params yapılandırma parametre anlamı kalmaz, o zamandan beri buraya ekler dize için url yerine vücuttan başka ne ekleyebilirim İnfeligo önerdi işte bir örnek küresel geçersiz kılma varsayılan dönüştürme (kullanarak bir WordPress kullanmak param örnek olarak dönüştürmek verilere param string).

Küresel transformRequest fonksiyonu ayarlayın:

var app = angular.module('myApp');

app.config(function ($httpProvider) {
    $httpProvider.defaults.transformRequest = function(data){
        if (data === undefined) {
            return data;
        }
        return $.param(data);
    }
});

Bu şekilde tüm $http çağırır.yazı otomatik olarak aynı param biçim bir WordPress kullanmak $.post arama tarafından kullanılan vücut dönüştürecek.

Ayrıca böyle bir çağrı başına veya genel olarak: İçerik-Type Başlığı ayarlamak isteyebilirsiniz unutmayın

$httpProvider.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded; charset=UTF-8';

Örnek-küresel olmayan çağrı başına transformRequest:

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

    $http.post("/foo/bar", requestData, {
        headers: { 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8'},
        transformRequest: transform
    }).success(function(responseData) {
        //do stuff with response
    });

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • DavideoDesign

    DavideoDesig

    24 NİSAN 2006
  • Dion Coulls

    Dion Coulls

    16 AĞUSTOS 2006
  • kev5124

    kev5124

    9 Kasım 2008