Как использовать ng-изменение в раскрывающемся списке выбора с функцией заполнения

#php #angularjs #ng-options

#php #angularjs #ng-параметры

Вопрос:

Я новичок в angular js, я создаю ионное приложение, в котором я пытаюсь заполнить опцию выбора, зависит от первой опции выбора, но переменная, которая выбирается в первой опции выбора, не может быть обработана для получения второй опции выбора

вот мой service.js

 cityFunction: function(bookUser) {
            var link = 'http://localhost/endpoints/citydetails.php';
            return $http.post(link);
        },
selectedsitesFunction: function(bookUser) {
            var data = { selectedCity1: bookUser.selectedCity1};
            var link = 'http://localhost/endpoints/selectedSites.php';
            return $http.post(link, data);
        }
  

controller.js

 $scope.bookUser.city = city;            
    $scope.bookUser.selectedCity = "";  
    $scope.bookUser.selectedCity1 = "";
    $scope.bookUser.site1 =[];
    $scope.bookUser.selectedSite1 = "";

$scope.getOptions2 = function(bookUser){
        $scope.bookUser.selectedCity1 = $scope.bookUser.selectedCity.Id;

        AllServices.selectedsitesFunction(bookUser)
        .then(function(response) {
            console.log(response);
        })
        .catch(function(error) {
            console.log(error);
        });
    };
  

вот html-страница

  <label class="item item-input item-select item-stacked-label">
                                <span class="input-label">City</span>
                                <select name="city" ng-model="bookUser.selectedCity" ng-options="item.City for item in bookUser.city" ng-change="getOptions2(bookUser)">
                                    <option value="">-- select city --</option>
                                </select>
                            </label>

<label class="item item-input item-select item-stacked-label">
                                <span class="input-label">sites</span>
                                <select name="site1" ng-model="bookUser.selectedSite1" ng-options="option for option in bookUser.site1">
                                    <option value="">--select site--</option>
                                </select>
                            </label>
  

и это .php код

 <?php
    include 'connection.php';
    $data = json_decode(file_get_contents("php://input"));
    $selectedCity1 = $data->$selectedCity1;

    $selectedSites = $db->query("SELECT Sites, Id from sitemaster where City = :selectedCity1 ");

    $selectedsites = $selectedSites->fetchAll(PDO::FETCH_ASSOC);

    echo json_encode($selectedsites);
?>
  

всякий раз, когда я пытаюсь получить доступ к этой переменной selectedCity1, консоль показывает ошибку

Notice: Undefined variable: selectedCity1 in C:xampphtdocsendpointsselectedSites.php on line 4

Fatal error: Cannot access empty property in C:xampphtdocsendpointsselectedSites.php on line 4

Комментарии:

1. Что это показывает, если вы используете print_r($_POST); в вашем php ниже строки json_decode ?

2. Обратите внимание: неопределенная переменная: selectedCity1 в C:xampphtdocsendpointsselectedSites.php в строке 4 Неустранимая ошибка: не удается получить доступ к пустому свойству в C:xampphtdocsendpointsselectedSites.php в строке 4 ….. та же ошибка

3. вы получили что-нибудь из моего обновленного ответа?

4. я опубликовал ошибку с неопределенным индексом

5. вы проверили мой js-код? правильно ли это?

Ответ №1:

 <?php
include 'connection.php';
$data = json_decode(file_get_contents("php://input"));
$selectedCity1 = $_POST['selectedCity1'];

$query = mysql_query("select Sites, Id from sitemaster where City = " $selectedCity1 "");
while ($fetch = mysql_fetch_array($query)) {
$output[] = array("site" => $fetch[0],"id" => $fetch[1];
}
echo json_encode($output);
?>
  

Надеюсь, это вам поможет 🙂 Спасибо

Комментарии:

1. можете ли вы показать мне вывод print_r($ _POST) в вашем php?

2. Обратите внимание: неопределенный индекс: selectedCity1 в C:xampphtdocsendpointsselectedSites.php в строке 15 Неустранимая ошибка: вызов функции-члена fetchAll() для не-объекта в C:xampphtdocsendpointsselectedSites.php в строке 19 сейчас появляется эта ошибка

3. где ваш connection.php файл ?

4. Находится ли он в той же папке, что и данный файл php?

5. <?php header(‘Access-Control-Allow-Origin: *’); header(‘Access-Control-Allow-Credentials: true’); header(‘Access-Control-Max-Age: 86400’);if ($_SERVER[‘REQUEST_METHOD’] == ‘OPTIONS’) {if (isset($_SERVER[‘HTTP_ACCESS_CONTROL_REQUEST_METHOD’])) header(«Access-Control-Allow-Methods: GET, POST, OPTIONS,DELETE, PUT»);if (isset($_SERVER[‘HTTP_ACCESS_CONTROL_REQUEST_HEADERS’])) header(«Access-Control-Allow-Headers: {$_SERVER[‘HTTP_ACCESS_CONTROL_REQUEST_HEADERS’]}»);exit(0);}$db = new PDO(«mysql:host=localhost;dbname=royaldb;port=3306″,»root»,»»);); ?>

Ответ №2:

 <?php
    include("connection.php");
    $data = json_decode(file_get_contents("php://input"));
    $selectedCity1 = $data->selectedCity1;

    $selectedSites = $db->query("SELECT Id, Sites FROM sitemaster WHERE City ='$selectedCity1' ");

    $selectedSites = $selectedSites->fetchAll(PDO::FETCH_ASSOC);

    echo json_encode($selectedSites);

?>
  

Комментарии:

1. да …. но я получаю сайты в этом формате.. Массив [объект, объект, объект, объект, объект, объект, объект, объект, объект] вот так, когда я выбираю город, как я могу заполнить эти объекты в списке выбора параметров?