мы на верном пути!
Теперь в теге <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, время: 01:33. |