Всем привет! Есть код на js и php (ajax изучаю), тут у меня задача по уроку JSON. На странице есть два выпадающих списка "Страны" и "Города". Список страны: Россия и Украина. Список города: пустой. Во время выполнения скрипта в список города должны добавляться города (Москва и Питер при выборе Россия, Киев Одесса при выборе Украина). Скрипт отказывается работать, открыл консоль js - там непонятная и неизвестная мне ошибка в файле jquery (файл который вы подключайте для работы самого jquery). Никак не могу исправить.. Надеюсь на помощь вот код: HTML: <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>Формат JSON</title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <script type="text/javascript" src="jquery-1.9.0.min.js"></script> Код (Javascript): <script type="text/javascript"> $(document).ready(function() { $("<select[name='country']></select>").bind("change", function() { $.get("script_3.php", {country: $("<select[name='country']></select>").val()}, function (data) { data = JSON.parse(data); $("select[name='city']").empty(); for (var id in data) $("<select[name='city']></select>").append($("<option value='" + id + "'>" + data[id] + "</option>")); }); }); }); </script> HTML: </head> <body> <label>Страна:</label> <select name="country"> <option value="0" selected="selected"></option> <option value="1">Россия</option> <option value="2">Украина</option> </select> <br /> <label>Город:</label> <select name="city"> <option value="0"></option> </select> </body> </html> И кончено сам php: PHP: <?php if ($_GET["country"] == 1) echo json.encode(array("1" => "Москва", "2" => "Питер")); elseif ($_GET["country"] == 2) echo json.encode(array("3" => "Киев", "4" => "Одесса")) ?>
мне кажется надо не так а $('select[name="country"]') и вообще лучше через id соотв. создаёт элемент, а не обращается к существующему, и возможно даже не создаёт его, что может генерировать ошибку, или отсылать пустой запрос. Что в итоге даёт пустой ответ от сервера. Прочитай про селекторы.
Попробовал, все равно не идет.. --- Добавлено --- В том то и дело что я не могу найти ошибку, а в консоли выводится ошибка в файле jquery(который скачиваешь с сайта jquery) в котором нету ошибок, браузер вообще запутался..
Про точку знаю, это просто не обновленный файл, там кроме точки я ничего не поменял. Но ошибка все равно ошибкой.. --- Добавлено --- https://jsfiddle.net/dmh0z16x/
Вас про ошибку уже спрашивали коллеги выше, но вы упорно не даёте о ней информацию. То, что ругается библиотека, не значит, что в консоли не выводится описание ошибки. Можно предположить, что JSON-строка не валидна. 1. Файл php должен быть в кодировке UTF-8 без BOM, иначе маркер добавится к отправляемому ответу. 2. Если после кода, который возвращает ответ, есть еще какой-то исполняемый код, то хорошо бы остановить дальнейшее выполнение: PHP: <?php $country = filter_input(INPUT_GET, 'country', FILTER_VALIDATE_INT, ['options' => ['default' => 0]] ); switch ($country) { case 1: $responce = ["1" => "Москва", "2" => "Питер"]; break; case 2: $responce = ["3" => "Киев", "4" => "Одесса"]; break; default: $response = ['error' => 'WTF?']; } exit ( json_encode($response) );
если ошибка Uncaught ReferenceError: $ is not defined то это значит, что ты просто jquery не прицепил до того, как обратился к ней.
не работает, там в html не нужно body использовать, в javascript выбрать версию jquery, onDomready указать, убрать ready из своего кода
--- Добавлено --- Сразу было понятно что не заработает, в jsfiddle некуда php вписывать, а без php этот код не должен работать, тут и вывод в fiddle все в порядке.. --- Добавлено --- Не такая, jquery я подключил. --- Добавлено --- Никакого кода дальше быть не должно. В php по идее все правильно, тоже самое в js, я тысячу раз проверял (есть рабочий код в видео), но работать отказывается..