如何使用php和angylarJS获取数据

时间:2016-04-21 15:16:15

标签: php mysql angularjs

我希望你心情愉快:)。我正在尝试使用AngularJS和php返回依赖于用户文本的数据。所以我创建文件php,其中包含我的查询并在AngularJS中使用$ http.get。我的问题是我想在mysql查询中集成输入值,但总是使用angular。我尝试了很多次,但没有任何作用更清楚,这里是muy代码:

app.js

app1.controller('autoCompleteCTRL',function($scope,$rootScope,$http) {
    $scope.search = function(){
        $scope.$watch('searchText', function() {
            console.log($scope.searchText);
        });
        $http({
            method: "get",
            url: "../SearchResultsQuery.php",
            dataType: 'json',
            data: { 'userText': $scope.searchText},
            async: false,
            params: {action: "get"}
        }).success(function(data, status, headers, config) {
            alert(data);
        }).error(function(data, status, headers, config) {           
            alert(error);               
        });
    };
}

的index.html

<input type="text" placeholder="Search for items" id="textFiled" class="input"  ng-model="searchText" ng-change="search()" />

app.php

<?php

$conn=pgsqlCon();
$searchText = mysql_real_escape_string(userText);
$query='SELECT * FROM planet_osm_roads AS a, to_tsquery_partial(\'%.$searchText.%\') AS query
WHERE ts_road @@ query';
$result = pg_query($conn,$query);
$myarray = array();
while ($row = pg_fetch_row($result)) {
    $myarray[] = $row;
}
pg_close($conn);
echo json_encode($myarray);

?>

我希望你理解我,谢谢你的进步:)。

2 个答案:

答案 0 :(得分:2)

尝试按照以下方式发出您的http请求:

app.controller('TestCtrl', function ($scope, $http){

    $scope.search = function(){
        $http.post('../app.php', {searchText: $scope.searchText})
        .success(function (response){
            console.log(response);
        })
        .error(function (response){
            console.log(response);
        });
    }

});

app.php

<?php
    $data = file_get_contents("php://input");
    $searchText = mysql_real_escape_string($data['searchText']);
    /* database code */
?>

这应该有用。

答案 1 :(得分:1)

  1. app.js 文件中,而不是此行:
  2.   

    数据:{&#39; userText&#39;:$ scope.searchText}

    写:

      

    params :{&#39; userText&#39;:$ scope.searchText}

    并删除此行:

      

    params:{action:&#34; get&#34;}

    这样它会将userText变量通过请求URL作为GET参数传输。

    1. app.php 文件中,而不是:
    2.   

      $ searchText = mysql_real_escape_string(userText);

      写:

        

      $ searchText = mysql_real_escape_string($ _ GET [&#39; userText&#39;]);

      这将使用客户端应用程序(AngularJS)中的文本填充$ searchText php变量。我不确定你的postgresql查询。你的问题标题是 mysql - 如何获取数据...... ,但在你的php代码示例中,你使用postgres扩展来构建查询。但我想这是一个不同的故事。