【问题标题】:AngularJS $http.get php file - $injector:modulerrAngularJS $http.get php 文件 - $injector:modulerr
【发布时间】:2014-04-17 13:52:45
【问题描述】:

我有这个文件 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'
    }
    ]
}    

这是我在控制台中看到的错误

Uncaught SyntaxError: Unexpected token : js/angular.js:44 未捕获的错误:[$injector:modulerr]http://errors.angularjs.org/1.2.15/$injector/modulerr?p0=instantSearch&p1=E...larjs.org%2F1.2.15%2F%24injector%2Fnomod%3Fp0%3DinstantSearch%0A%20%20%20%。 .....1)

这是小提琴尝试响应#1

http://jsfiddle.net/XgsWU/

这个是响应#2

http://jsfiddle.net/JGjyS/

【问题讨论】:

    标签: javascript php angularjs


    【解决方案1】:

    对于以后可能会阅读此内容的任何人,我发现我的问题出在我的控制器调用中,并且我已更改/更新为此并且效果很好!

    app.controller('InstantSearchController', ['$scope', '$http', function($scope, $http) {
         $http.get('inc/api.php').success(function(itemData) {
         $scope.items = itemData;
       });
    }]);
    

    【讨论】:

      【解决方案2】:

      意外令牌:。这是来自:

      $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,
          });
      });
      

      【讨论】:

      • 很抱歉,我没有完全关注你……下面的回复似乎已经解决了这个错误,但还没有 100% 工作。将我的代码更改为您提供的代码并没有解决错误或更改输出。还有其他建议吗?非常感谢您的回复!
      • @Travis 也许你可以设置一个 jsfiddle 来玩?
      • 老实说,我不知道我可以为此使用小提琴,但是是的,我现在就试一试!
      【解决方案3】:

      这里有语法错误:

      $scope.items = [
            image : data['icon'],
            english : data['english'],
            british : data['british']
       ];
      

      应该是:

      $scope.items = [
            {image : data['icon'],
            english : data['english'],
            british : data['british']}
       ];
      

      【讨论】:

      • 太棒了,现在已经解决了这个错误,没有用 data['icon'] 填充任何东西,所以将它切换到 data[1],现在它正在填充每个字段 {"id" :"4","icon":"advil.jpg","english":"ASS+C 1A-Pharma","british":"Abelitan"} 有什么办法更新吗?
      猜你喜欢
      • 2013-05-31
      • 2013-08-19
      • 1970-01-01
      • 1970-01-01
      • 2017-08-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多