мы на верном пути!
Теперь в теге <select>выдается валидное количество опций подкатегорий, но все они называются Код:
[object Object] |
griga, посмотри, что передается функции «fillSubcatList», в начало этой функции засунь это:
console.log(elements); |
Nexus,
Вот сейчас вообще не понял((( Снова выдает ошибку на строке var Subcategories=JSON.parse(HTTPReq.responseText); Ошибка: Uncaught SyntaxError: Unexpected token < in JSON at position 0 at JSON.parse (<anonymous>) at XMLHttpRequest.HTTPReq.onreadystatechange Команда echo json_encode($output); в файле page.php возвращает следующий результат: [{"9":"\u0420\u0430\u0441\u0445\u043e\u0434\u043d\u0430\u044f \u043a\u043e\u0441\u043c\u0435\u0442\u0438\u043a\u0430"},{"14":"\u041e\u0434\u043d\u043e\u0440\u0430\u0437\u043e\u0432\u044b\u0435 \u0440\u0430\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0438"},{"16":"\u0418\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442"}] |
griga,
в page.php while замените на это и все будет работать: while($row=$result->fetch_assoc()){ $output[$row['id']]=addslashes($row['subcategory']); }; |
Цитата:
|
Цитата:
|
Итак,
Теперь код page.php выглядит так: if(!array_key_exists('category', $_GET)) die(); include('scripts/connect.php'); $query = "SELECT id, subcategory FROM expenses_cat WHERE category='" . $_GET['category'] . "' AND inmenu = 1"; $result = $conn->query($query); $output = array(); while($row=$result->fetch_assoc()){ $output[$row['id']]=$row['subcategory']; }; echo json_encode($output); exit; Если заменить $_GET['category'] на одно из реальных значений категории, на выходе получаем данные типа {"9":"\u0420\u0430\u0441\u0445\u043e\u0434\u043d\u0430\u044f \u043a\u043e\u0441\u043c\u0435\u0442\u0438\u043a\u0430","14":"\u041e\u0434\u043d\u043e\u0440\u0430\u0437\u043e\u0432\u044b\u0435 \u0440\u0430\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0438","16":"\u0418\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442"} В самой же форме при выборе категории консоль отображает ошибку на строке var Subcategories=JSON.parse(HTTPReq.responseText); VM3836:1 Uncaught SyntaxError: Unexpected token < in JSON at position 0 at JSON.parse (<anonymous>) at XMLHttpRequest.HTTPReq.onreadystatechange Может проблема кроется в передаче данных на обработку посредством $_GET? |
Nexus,
сервер отдает валидный json, а убрать кодирование многобайтных строк можно начиная с версии 5.4 опцией JSON_UNESCAPED_UNICODE. Ошибка на клиенте потому, что до передачи json есть еще вывод в браузер. |
Цитата:
Можно воспользоваться опцией, а можно убрать экранирование. (Версия PHP вопрощающего неизвестна, а проверять её в коде - глупость.) griga, Цитата:
$category=$conn->real_escape_string($_GET['category']); $query = "SELECT id, subcategory FROM expenses_cat WHERE category='".$category."' AND inmenu = 1"; Цитата:
|
Цитата:
Что касается среды: локальный сайт на OpenServer: Apache-PHP-7 PHP 7.0 MySQL 5.6 P.S. Про инъекции почитаю обязательно. Спасибо |
Часовой пояс GMT +3, время: 12:26. |