使用angular在POST请求中发送嵌套数据

时间:2016-01-21 15:13:54

标签: angularjs http

我收到了POST请求,由于我需要发送一些奇怪的数据参数,我无法正常工作。

虽然这有效:

return $http.post('/adcampaign/update_ads.json'
    + '?id=' + params.id
    + '&adcampaign_id=' + params.adcampaignID
    + '&ads[description]=' + params.description
    + '&ads[title]=' + params.title
    + '&ads[skip_offset]=' + params.skip_offset
    + '&ads[click_through]=' + params.click_through);
}

它创建了我不想要的参数,但这是我到目前为止工作的唯一方式。

我试过这样做:

$http.post('/adcampaign/update_ads.json', {
    id: params.id,
    adcampaign_id: + params.adcampaignID,
    'ads[description]': params.description,
    'ads[title]': params.title,
    'ads[skip_offset]': params.skip_offset,
    'ads[click_through]': params.click_through
});

但由于ads[prop]数据属性,后端会产生错误。

在没有' s ads[prop]的情况下编写它会引发语法错误,以及编写ads['prop']

我该如何做到这一点?

1 个答案:

答案 0 :(得分:0)

应该创建属性ads,它本身就是一个具有属性的对象。

var postData = {
    id: params.id,
    adcampaign_id: + params.adcampaignID,
    ads:{
        description: params.description,
        title: params.title,
        skip_offset: params.skip_offset,
        click_through: params.click_through
    }   
}

$http.post('/adcampaign/update_ads.json', postData) ;

在php中验证:

$data = json_decode(file_get_contents('php://input'));
var_dump($data);