Javascript 使用AngularJS$Resource从MySQL添加和删除数据

Javascript 使用AngularJS$Resource从MySQL添加和删除数据,javascript,php,mysql,angularjs,Javascript,Php,Mysql,Angularjs,编辑: 我得到要保存的错误:错误:[$resource:badcfg]保存 要获取此错误,请执行以下操作:错误:[$resource:badcfg]get 我想这是因为get需要一个对象,而我对这两个对象的响应都是数组:[{id:1,name:computator},{id:2,name:Impressora}] 代码已经更新,我添加了index.html 我真的很困惑如何处理get、save和delete上的数据。我必须在php上做吗 我在MySQL上有一些数据,想用AngularJS来管理,

编辑: 我得到要保存的错误:错误:[$resource:badcfg]保存

要获取此错误,请执行以下操作:错误:[$resource:badcfg]get

我想这是因为get需要一个对象,而我对这两个对象的响应都是数组:[{id:1,name:computator},{id:2,name:Impressora}]

代码已经更新,我添加了index.html

我真的很困惑如何处理get、save和delete上的数据。我必须在php上做吗

我在MySQL上有一些数据,想用AngularJS来管理,但是我的保存、删除和获取功能都不太好,唯一有效的是查询

app.js

var-app=angular.module'app',['ngResource']

app.controller("lojaCtrl", function($scope, $resource){

    var Produto = $resource("/loja/produtos/", {}, {
        "save:": {method: 'POST', isArray:true}
    }); 

    $scope.produto = {};
    $scope.produtos = [];

    $scope.getProdutoById = function(){
        Produto.get({id:$scope.codigo}, function(data) { //função get
            $scope.produto = data;              
        });
    }

    $scope.getProdutos = function(){
        Produto.query(function(data) { //função query
            $scope.produtos = data;
        });
    }

    $scope.selectProduct = function(produto)
    {
        $scope.produto = produto;   
    }

    $scope.saveProduto = function(){
        //$scope.products = Produto.query();
        new Produto($scope.inserir).$save(function(data) {
            $scope.products.push(data);
        });
    }

    $scope.deleteProduto = function(){
        Produto.delete({Id:$scope.codigo}, function(data) {
        });
    }

});
produtos/Index.php

Index.html

<body ng-controller="lojaCtrl">
    <input type="text" ng-model="codigo" name="codigo"/>        
    <input type="text" ng-model="produto.id" name="id"/>
    <input type="text" ng-model="produto.name" name="name"/>        
    <button ng-click="getProdutoById()">Get Produto</button>
    <hr/>
    <ul>
        <li ng-repeat="produto in produtos" ng-click="selectProduct(produto)">Id: {{produto.id}} - Nome: {{produto.name}}</li>
    </ul>
    <button ng-click="getProdutos()">Get Produtos</button>
    <hr/>
    <input type="text" ng-model="inserir" name="inserir"/>
    <button ng-click="saveProduto()">Save Produto</button>
    <hr/>
    <button ng-click="deleteProduto()">Delete Produto</button>  
</body>

您收到的错误是因为您的资源正在等待对象而不是数组

资源错误,请将其更改为以下内容:

var Produto = $resource("/loja/produtos/", {}, {
        "save:": {method: 'POST', isArray:true}
    });
现在,您正在执行真正的“扩展”或覆盖Intance的默认保存方法 默认的保存方法等待的是对象而不是数组,这是您得到的错误

试试看

另外,新产品o.$save将向服务器发送一个空帖子。。这就是你想要的吗?如果没有,则需要将值传递给producto实例 与:


希望这对您有所帮助。

例如,在执行插入操作时会出现什么错误?当我尝试保存时,会出现错误:错误:[$resource:badcfg]在控制台中保存。这是它引用的链接。在控制台上,检查“网络”选项卡。并尝试查找请求的响应。该错误是因为您正在接收JSON,但正在等待arrayHumm,对的响应是数组[{id:1,name:Computator},{id:2,name:Impressora}],而不是数据。我想我需要用$save将数据插入数据库,但我根本不能这样做。它不起作用,但谢谢。问题是我不知道如何发布我的数据。甚至没有得到工作,只有query@VictorMelias谢谢你接受我的答案,但如果这个答案仍然不符合你的需要,你就不应该接受。。让我们继续为你的问题找到真正的解决办法。。
var Produto = $resource("/loja/produtos/", {}, {
        "save:": {method: 'POST', isArray:true}
    });
new Producto($scope.producto).$save(callback)
var product = new Producto();
product.name = $scope.producto.name;
//... other properties
product.$save(callback);