PUT请求不起作用

时间:2017-09-19 10:11:23

标签: javascript angularjs

我在角度使用Rest Api并且我的GET请求正常工作但是当我编辑数据并进行一些更改时,我的PUT请求无效并且数据没有保存到json文件中。

这是我的代码:

<div ng-show="contact" id="contacts_edit"> 
<button class="btn btn-secondary" ng-hide="editMode" ng-click="toggle_edit()"> Edit </button>`

<button class="btn btn-success" ng-show="editMode" ng-click="toggle_save()"> Save </button> 

<b> Street:</b> 
<p ng-hide="editMode"> 
   {{cts.selectedcontact.location.street}} 
</p>
<input type="text" ng-show="editMode" ng-model="cts.selectedcontact.location.street">

角度代码:

$scope.toggle_save = function(contacts){
    $http.put('http://localhost:3000/contacts' + contacts.id)
        .then(function(response){
            console.log(response)
            $scope.cts.selectedcontact = response.data.contacts;
        })
}

1 个答案:

答案 0 :(得分:0)

put(url, data, [config]);

https://docs.angularjs.org/api/ng/service/ $ HTTP#放

您目前拥有的是一个简单的网址,当您在网址末尾添加ID时,该网址甚至没有任何参数。

$scope.toggle_save = function(contacts){
    $http.put('http://localhost:3000/contacts', contacts.id)
        .then(function(response){
            console.log(response)
            $scope.cts.selectedcontact = response.data.contacts;
        })
}

将id传递给/ contacts路径会更正确。

暂且不说,您没有将任何数据传递到您的函数中。

ng-click="toggle_save()"

有一个空构造函数,所以不确定你从哪里获得合同。您可能希望传入模型,除非您有一个名为&#39; contacts&#39;的变量。在你的控制器中定义,我怀疑看到你的模型绑定。 因此,在cts.selectedcontact内传递ng-click="toggle_save(cts.selectedcontact)"对象会使假设此对象包含您尝试访问的属性。

另一个假设是cts是您的控制器别名,而selectedcontact是附加到$scope的对象,即$scope.selectedcontact = {};