angularjs post请求在同一个php脚本之间发送和接收数据

im9ewurl  于 2021-06-20  发布在  Mysql
关注(0)|答案(0)|浏览(240)

我看了很多遍,仍然没有找到我问题的答案。我已经很接近了,但我想我只能靠自己了。
我有一个数据库,里面有不同年份的表,比如: year_2016 , year_2017 , year_2018 等等。。。
我使用php和mysql查询这些表,并使用angularjs在html中显示它们。
这是我的html:

<div id="main" ng-controller="MyController">
    <input type="text" placeholder="Search" autofocus ng-model="query" />
    <input type="text" placeholder="Year" ng-model="year" ng-blur="sendData()" />
    <div id="db-results" ng-show="query">
        <p><span>Searching for: "{{ query }}"</span></p>
        <p>{{ filtered.length }} results</p>
        <div class="container table">
            <div class="row" ng-repeat="item in items | limitTo : 100 | filter : query as filtered">
                <div class="col bg-info text-light rounded-left">{{ item.dir }}</div>
                <div class="col bg-warning text-dark">{{ item.index }}</div>
                <div class="col-lg-6 bg-light text-dark">{{ item.text }}</div>
            </div><!-- row -->
        </div><!-- table -->
    </div><!-- db-results -->
</div><!-- main -->

我的Angular :

var myControllers = angular.module('myControllers', []);

myControllers.controller('MyController',
    function MyController($scope, $http) {
        $scope.year = 2018;

        $scope.sendData = (function () {
            var data = $.param({
                year: $scope.year
            });
            var config = {
                headers: {
                    'Content-Type': 'application/x-www-form-urlencoded; charset=utf-8;'
                }
            };

            var postURL = 'mysql_conn.php';

            $http.post(postURL, data, config)
            .then(
                function(response){
                    console.log(data);
                    console.log('post_year=' + response.data.year);
                    $scope.items = response.data.records;
                }, 
                function(response){
                    console.log('failure ' + response);
            });

        })();
});

最后,php:

<?php

header("Access-Control-Allow-Origin: *");

$request = json_decode(file_get_contents('php://input', true));
$year = $request->year;
// $year = 2018;

$conn = new mysqli("SERVER", "USER", "PASSWORD", "DATABASE");

$result = $conn->query("SELECT * FROM year_" . $year . " LIMIT 100;");

$output = "";
while($rs = $result->fetch_array(MYSQLI_ASSOC)) {
    if ($output != "") {$output .= ",";}
    $output .= '{"dir":"' . $rs["dir_index"] . '",';
    $output .= '"index":"' . $rs["sub_index"] . '",';
    $output .= '"text":"' . $rs["text"] . '"}';
}

$output ='{"records":[' . $output . '], "year": ' . $year . '}';
$conn->close();

echo($output);

?>

我可以设置 $year 变量,然后在我的实际网页上,我可以键入搜索,它会相应地过滤记录。这么多有用。
我想做的是,在年份输入框中输入年份,让php重新查询相应的表并显示结果,这是我目前无法做到的。换句话说,我希望年份输入框是有响应的。php不是动态的,所以我认为angular/ajax也许可以帮我解决这个问题。
在Angular 代码中,我使用 http.post 发送的值 $scope.year 然后查询相应的表。至少,这就是我想做的。没用了。在php中,输出json的一部分是 $year 变量应与 $scope.year 但是当我把它打印到控制台时,它会返回 undefined . 我还使用相同的post请求从数据库中获取php查询的数据(这是可行的)。
我也尝试过使用单独的get和post请求,但没有成功。
谢谢!

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题