Как получить данные используя php и angylarJS

0

Надеюсь, у вас хорошее настроение :). Я пытаюсь вернуть данные, которые зависят от текста пользователя, использующего AngularJS и php. Поэтому я создаю файл php, содержащий мой запрос, и используя $ http.get в AngularJS. Моя проблема заключается в том, что я хочу интегрировать значение ввода в mysql-запрос, но всегда использовать угловой. Я много раз пробовал, но ничего не работает. Чтобы быть более понятным, вот код муи:

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);

?>

Я надеюсь, что вы меня поймете Спасибо за продвижение :)

  • 0
    проверьте это keyboardninja.eu/webdevelopment/…
  • 0
    Сначала спасибо за вашу помощь. Я уже читал эту статью, но я не понимаю, как использовать file_get_contents ("php: // input"). Я пишу свой запрос в php файле, так что мне нужно использовать эту строку?
Показать ещё 1 комментарий
Теги:

2 ответа

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 */
?>

Это должно сработать.

  • 0
    Оки спасибо, сейчас попробую
  • 0
    пожалуйста.
Показать ещё 5 комментариев
1
  1. В вашем файле app.js вместо этой строки:

data: {'userText': $ scope.searchText}

записывать:

params: {'userText': $ scope.searchText}

и удалите эту строку:

params: {действие: "get"}

Таким образом, он будет передавать переменную userText через URL-адрес запроса в качестве параметра GET.

  1. В файле app.php вместо:

$ searchText = mysql_real_escape_string (userText);

записывать:

$ searchText = mysql_real_escape_string ($ _ GET ['userText']);

Это заполнит вашу переменную PHP $ searchText текстом из клиентского приложения (AngularJS). Я не уверен в вашем запросе postgresql. Заголовок вопроса - mysql - Как получить данные..., но в вашем примере PHP-кода вы используете расширение postgres для построения запроса. Но это другая история, я думаю.

  • 0
    Привет, спасибо за помощь, сейчас попробую. Ах да, я использую базу данных Postgres
  • 0
    Я получил ту же ошибку. Я думаю, что проблема в этой строке: $ searchText = mysql_real_escape_string ($ _ GET ['userText']). Как вы думаете?
Показать ещё 5 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню