Надеюсь, у вас хорошее настроение :). Я пытаюсь вернуть данные, которые зависят от текста пользователя, использующего 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);
?>
Я надеюсь, что вы меня поймете Спасибо за продвижение :)
попробуйте сделать свой 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 */
?>
Это должно сработать.
data: {'userText': $ scope.searchText}
записывать:
params: {'userText': $ scope.searchText}
и удалите эту строку:
params: {действие: "get"}
Таким образом, он будет передавать переменную userText через URL-адрес запроса в качестве параметра GET.
$ searchText = mysql_real_escape_string (userText);
записывать:
$ searchText = mysql_real_escape_string ($ _ GET ['userText']);
Это заполнит вашу переменную PHP $ searchText текстом из клиентского приложения (AngularJS). Я не уверен в вашем запросе postgresql. Заголовок вопроса - mysql - Как получить данные..., но в вашем примере PHP-кода вы используете расширение postgres для построения запроса. Но это другая история, я думаю.