【问题标题】:Angularjs autocomplete json with and without httpAngularjs 自动完成 json 有和没有 http
【发布时间】:2015-10-13 14:19:15
【问题描述】:

在我的代码中,我使用角度(材料)自动完成,我需要从外部 php 文件中获取数据。

HTML:

<div ng-controller="search_interest" layout="column">
  <md-content class="md-padding" layout="column">

      <md-autocomplete 
        md-selected-item="selectedItem" 
        md-search-text="searchText" 
        md-items="item in getInterest1(searchText)" 
        md-item-text="item.name" 
        placeholder="Search for a vegetable">
        <span md-highlight-text="searchText">{{item.name}} :: {{item.type}}</span>
      </md-autocomplete>

  </div>

当我返回一个“手工制作”的 JSON 时,自动完成效果很好:

//RETURN: results [{"name":"Broccoli","type":"Brassica"}]
    $scope.getInterest1 = function() {
      var results = [
        {
          'name': 'Broccoli',
          'type': 'Brassica'
        }];
        console.log('results', JSON.stringify(results));
        return results;
        };

但是当我使用 $http.get 调用相同的 JSON 时,它不会在自动完成中显示结果并且什么也没有发生。

//RETURN: results [{"name":"Broccoli","type":"Brassica"}]
    $scope.getInterest2 = function() {
      $http.get("../inc/users/search_interest.php?query=" + $scope.searchText)
        .success(function(results) {
          //$scope.interest = results;
          console.log('results', JSON.stringify(results));
          return results.data;
        });
    };

但我可以在控制台中看到结果是相等的。

在我的 php 文件(由 $http.get 调用)中,我返回带有 json-encode 的 JSON:

$row_set = array('name' => 'Broccoli', 'type'=> 'Brassica');
echo json_encode(array($row_set));

也许 php json_encode 返回格式错误的 json?

谢谢

【问题讨论】:

  • echo json_encode($row_set); 就够了。
  • 是的,我知道就够了,但让我解释一下,我使用了上面代码中所示的方法,否则我会得到结果 {"name":"Broccoli","type":"Brassica"}控制台(所以没有 [ ])。这是一次尝试。但也 echo json_encode($row_set);自动完成不起作用

标签: php json angularjs autocomplete


【解决方案1】:

好的。刚刚使用 Promise 解决了我的问题。 在控制器中我声明了 $q

function($scope, $http, $q)
{
    $scope.searchText = '';
    $scope.selectedItem = undefined;
    $scope.selectedInterest = [];

    var deferred = $q.defer();

在函数中我使用了 $q:

$scope.getInterest2 = function() {
      $http.get("../inc/users/search_interest.php?query=" + $scope.searchText)
        .success(function(results) {
          //$scope.interest = results;
          console.log('results', JSON.stringify(results));
          alert(results.name);
          deferred.resolve(results);
        });
        return deferred.promise;
    };

谢谢!

【讨论】:

    猜你喜欢
    • 2016-06-09
    • 2014-08-20
    • 2013-08-29
    • 1970-01-01
    • 2020-06-07
    • 1970-01-01
    • 2012-05-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多