Задать вопрос
@OMP_KG

JavaScript не получает массивы PHP в формате JSON. Как это исправить?

Добрый день форумчане,
Создал две файлы: index.php (клиентская сторона) и server.php (сервер).
Код следующая:
Клиентская сторона:
<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <script src="http://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script>
        <script type="text/javascript">

$(document).ready(function(){            
                    $( "select [name='country']" ).bind("change", function () {
                        $("select[name='city']").empty();
                        $.get(
                            "server.php", 
                            {country: $("select[name='country']").val()},
                            function (data){
                                data = JSON.parse(data);
                                for(var id in data){
                                    $("select[name='city']").append($("<option value='"
                                    + id + "'>" + data[id] + "</option>"));
                                }
                            }
                        );
                    });
            });

</script>
    </head>
    <body>
        <label>Укажите страну:</label>
        <select name="country">
            <option value="0" selected="selected"></option>
            <option value="1">Америка</option>
            <option value="2">Франция</option>
        </select>
        <label>Города</label>
        <select name="city">
            <option value="0"></option>
        </select>
    </body>
</html>

Серверная сторона:
<?php
if ($_GET["country"] == 1) {
            echo json_encode (array("1"=>"Вашингтон", "2"=>"Сиэтл"));
        }
else if ($_GET["country"] == 2) {
            echo json_encode (array("1"=>"Париж", "2"=>"Марсель"));    
        }
?>

Проблема в следующем. Я использую Open Server 5.2.2. базовый вариант, версия PHP 5.6.23, Apache API Version 20120211, аппарат - Ноутбук.
Данный код работает в локальном сервере настольного ПК, но у меня не работает, точнее JavaScript не получает массивы PHP в формате JSON ...
В чем проблема может быть? Помогите...
  • Вопрос задан
  • 223 просмотра
Подписаться 1 Оценить 1 комментарий
Решения вопроса 1
@Wexter
ну как бы а чего вы хотите передавая в сериализацию ассоциативный массив?
либо объявляйте обычный массив array("Париж", "Марсель"), либо на клиентской стороне работайте с получившимся объектом
UPD: в селекторе $( "select [name='country']" ).bind у вас лишний пробел после select
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Carduelis
@Carduelis
Web-developer, front-end, js, less
Надо указать, что скрипт ожидает именно json, а не plaintext:
$.get({
   url: 'url',
   dataType: 'json'
})
    .success(function(){})
    .fail(function(){});

либо можно использовать шорткат для этого:
$.getJSON('url')
    .success(function(){})
    .fail(function(){});
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы