#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. да …. но я получаю сайты в этом формате.. Массив [объект, объект, объект, объект, объект, объект, объект, объект, объект] вот так, когда я выбираю город, как я могу заполнить эти объекты в списке выбора параметров?