我有这个文件api.php
require_once 'db.php';
$con = mysql_connect($host,$user,$pass);
$dbs = mysql_select_db($databaseName, $con);
$query=mysql_query("SELECT * FROM $tableName") or die(mysql_error());
$arr[];
while($obj = mysql_fetch_object($query)) {
array_push($arr, $obj);
}
echo $json_response = json_encode($arr);
它正在获取我需要的所有数据。
然后我尝试将这些数据放入我的$scope中。。。
// The controller
function InstantSearchController($scope, $http){
$http.get('api.php').success(function(data) {
$scope.items = data;
$scope.items = [
image : data['icon'],
english : data['english'],
british : data['british']
];
});
}
但如果我像这样对数据进行硬编码,这确实有效。
function InstantSearchController($scope){
$scope.items = [
{
english: 'English A',
british: 'British A',
image: 'images/advil.jpg'
},
{
english: 'English B',
british: 'British B',
image: 'images/advil.jpg'
}
]
}
这是我在控制台中看到的错误
未捕获的语法错误:意外的标记:js/angular。js:44未捕获错误:[$injector:modulerr]http://errors.angularjs.org/1.2.15/$injector/modulerr?p0=instantSearch&p1=E.…larjs.org%2F1.25%2F%24注射器%2Fremod%3Fp0%3DinstantSearch%0A%20%20%20%。。。。。。1)
这是小提琴尝试响应#1
http://jsfiddle.net/XgsWU/
这是针对响应#2 的
http://jsfiddle.net/JGjyS/
对于稍后可能阅读本文的任何人,我发现我的问题出现在我的控制器调用中,我已经对此进行了更改/更新,它运行得很好!
app.controller('InstantSearchController', ['$scope', '$http', function($scope, $http) {
$http.get('inc/api.php').success(function(itemData) {
$scope.items = itemData;
});
}]);
意外的令牌:
。这是来自:
$scope.items = [
image : data['icon'],
您应该使用$scope.items = {...}
,因为您想要一个具有键值对的JavaScript对象,而不是一个数组。
看起来您还想在data
上循环并将项目推送到阵列上:
$scope.items = [];
data.forEach(function (datum) {
$scope.items.push({
image: datum.icon,
english: datum.english,
british: datbum.british,
});
});
此处出现语法错误:
$scope.items = [
image : data['icon'],
english : data['english'],
british : data['british']
];
应该是:
$scope.items = [
{image : data['icon'],
english : data['english'],
british : data['british']}
];