AngularJS将POST响应视为字符串数组而不仅仅是字符串

时间:2014-06-11 12:15:25

标签: javascript angularjs rest post

我正在发出POST请求:

var offers = $resource('/api/offers/:id', { 
    id: '@id' 
}

offers.save({}, { name: $scope.newOfferName }, function (offerId) {
    $location.path('/offers/' + offerId);
});

我希望offerId是一个字符串" key",而是我得到一个数组[0]" k",[1]" e",[ 2]" y"。

在后端我使用Nancy并使用以下命令返回响应:

Post["/"] = _ =>
{
    return Response.AsText("key");
};

响应标题说Content-Type:text / plain和Chrome预览(网络标签)我可以看到" key"。

当我将对象作为JSON返回时,它工作正常,但我不想创建假类(具有字符串字段)只是为了将字符串传递给客户端。

我认为南希在这里很好。 Angular发生了什么?

2 个答案:

答案 0 :(得分:2)

您不必为此创建。您可以使用匿名类型:

Post["/"] = _ =>
{
    return Response.AsJson(new { offerId = "key" });
};

答案 1 :(得分:1)

angular有一个默认转换,尝试将传入数据解析为json。 https://github.com/angular/angular.js/blob/master/src/ng/http.js#L94

您可以完全从$ http中的transformers数组中删除该转换,或者在尝试转换数据之前将其替换为检查内容类型的转换。