【发布时间】:2014-11-11 13:21:51
【问题描述】:
编辑: 我收到要保存的错误:错误:[$resource:badcfg] 保存
得到这个错误:Error: [$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>
【问题讨论】:
-
例如,当您插入时遇到的错误是什么?
-
当我尝试保存时,我在控制台中收到错误:“错误:[$resource:badcfg] 保存”。 errors.angularjs.org/1.3.1/$resource/… 这是它引用的链接。
-
打开,您的控制台检查网络选项卡。并尝试找到请求的响应。
-
该错误是因为您正在接收 JSON,但您正在等待一个数组
-
嗯,localhost/loja/produtos/… 的响应是数组 [{"id":"1","name":"Computador"},{"id":"2","name" :"Impressora"}],而不是数据。我想我需要用 $save 将数据插入数据库,但我根本做不到。
标签: javascript php mysql angularjs