Вызов JSON возвращает [объект объекта] или неопределенный - PullRequest
0 голосов
/ 14 августа 2011

Очень вопрос начального уровня.Попытка изучить JSON и проблемы с получением правильных возвращаемых данных.Я пытаюсь использовать JSON для возврата ошибок из формы php, используя json_encode($errs, JSON_FORCE_OBJECT), но сначала я хочу, чтобы приведенный ниже очень простой код работал для понимания объектов JSON.

Я просматривал подобные темы здесь,Прочитайте всю документацию JSON.org, посмотрите на метод $ .getJSON () JQuery и подключите точный код из документации, а также точный код для документации JSON, и я все еще не могу получить ответ, другойчем "неопределенный" или "[объект, объект]".

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <!---CSS-->
    <link href="style/960.css" media="all" rel="stylesheet" type="text/css" />
    <link href="style/pubstyle.css" media="all" rel="stylesheet" type="text/css" />
    <!--- Javascript -->
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js" 
    type="text/javascript"></script>
    <script src="javascripts/form.js" type="text/javascript"></script>
    <script src="javascripts/validate.min.js" type="text/javascript"></script>
    <script src="javascripts/json2.js" type="text/javascript"></script>
    </head>
    <body>
    <script type="text/javascript">
         $(document).ready(function() {
             var resp = {"message":"hi"};
         $("a#button").click(function(resp) {
           alert(resp)
         });
         });

    </script>

    <a id="button" href="#">Button</a>
    </body>
    </html>

Приведенный выше код возвращает предупреждение с «[объект объекта]».Когда я изменяю код на:

    $(document).ready(function() {
             var resp = {"message":"hi"};
         $("a#button").click(function(resp) {
           alert(resp.message)
         });
         });

, я получаю «неопределенное» предупреждение.Я попытался поместить его в объект массива

{ "messages": [ {"message":"hi"}]}

и вызвать его с помощью

resp.messages[0].message

, но безуспешно.Я попытался изменить Content-Type на «application / json» и «text / plain», но ни один из них не сработал.Также попробовал

$(document).ready(function() {  
var resp = jQuery.parseJSON('{"message":"hi"}');
$("a#button").click(function(resp) {
alert(resp.message)
});
});

1 Ответ

4 голосов
/ 14 августа 2011

Вы путаете пару разных элементов здесь.

Простой пример, основанный на последнем фрагменте кода в вашем вопросе:

$(document).ready(function() {  
    var resp = $.parseJSON('{"message":"hi"}');
    $('#button').click(function(event) {
        alert(resp.message);
    });
});

Ваша версия этого кода не работалапотому что функция обратного вызова click получает объект события click в качестве аргумента.Имя аргумента resp в обратном вызове скрывает переменную resp.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...