gpt4 book ai didi

javascript - 使用 AngularJS $Resource 在 MySQL 中添加和删除数据

转载 作者:行者123 更新时间:2023-11-29 23:27:12 25 4
gpt4 key购买 nike

编辑:我收到保存错误:错误:[$resource:badcfg] save

得到这个错误:错误:[$resource:badcfg] get

我想它会发生,因为 get() 需要一个对象,而我对两者的响应都是一个数组: "[{"id":"1","name":"Computador"},{"id": "2","name":"Impressora"}]"

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

我对如何处理获取、保存和删除数据感到非常困惑。我必须在 php 上做吗?

<小时/>

我在 MySQL 上有一些数据,想用 AngularJS 来管理它,但是我的保存、删除和获取功能不能很好地工作,唯一有效的是 query()。

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) {
});
}

});

产品/Index.php

header('Content-Type: application/json');

$banco = "produtos";
$usuario = "root";
$senha = "";
$hostname = "localhost";
$conn = mysql_connect($hostname,$usuario,$senha); mysql_select_db($banco) or die( "Não foi possível conectar ao banco MySQL");

$sql = "SELECT * FROM t_produtos";
$rs = mysql_query($sql);

class Produto
{
public function __construct($id, $name)
{
$this->id = $id;
$this->name = $name;
}

public $id;
public $name;
}

while($row = mysql_fetch_array($rs)){
$p = new Produto($row['id'],$row['nome']);
$products[] = (object)array('id' =>$p->id, 'name' =>$p->name);
}

if (isset($_GET['Id']))
{
$p = $products[($_GET['id']-1)];
echo json_encode($p);
exit;
}

if (!isset($_GET['Id']))
{
echo json_encode($products);
exit;
}

/*$data = file_get_contents('http://localhost/loja/');

$objData = json_decode($data);

$sql = "INSERT INTO t_produtos(nome) VALUES('$objData')";*/

索引.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}
});

现在您正在执行真正的“扩展”或覆盖实例的默认保存方法(默认的保存方法等待一个对象而不是数组,这是您收到的错误)

尝试一下..

另外 new Producto().$save 会向服务器发送一个空帖子..这是你想要的吗?如果没有,您需要将值传递给 Producto 实例与:

new Producto($scope.producto).$save(callback)

var product = new Producto();
product.name = $scope.producto.name;
//... other properties
product.$save(callback);

希望这有帮助..

关于javascript - 使用 AngularJS $Resource 在 MySQL 中添加和删除数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26865925/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com