Отображение объекта Json - PullRequest
0 голосов
/ 04 апреля 2011

Я получаю результат json, подобный этому, после выполнения вызова ajax

{"answer":{"isPresent":true,"test":{"string":[""]},"Id":310}}

Я хочу содержимое теста в текстовой области. Когда я получаю и отображаю содержимое «теста» в текстовой области, я получаю только это

[Object object]

как сериализовать это значение?

Код:

$.ajax(
        {
                async:      true,
                beforeSend: function(){

                            },
                url:        'beginDisplay.do',
                type:       'POST',
                data:       param,
                dataType:   'json',
                success:    function(data, textStatus, XMLHttpRequest){ 

                                var isPresent= data.answer.isPresent;
                                if(isPresent){

                                var testString = data.answer.test;
                                $("#textArea").val(testString);


                            },
                error  :    function(XMLHttpRequest, textStatus, errorThrown){
                                //alert(XMLHttpRequest.responseText+" http code"+XMLHttpRequest.statusCode);
                                //alert('XMLHttpRequest:'+XMLHttpRequest+'===>> textStatus:'+textStatus+'==>>errorThrown:'+errorThrown);
                            },
                complete :  function(){
                                //alert('after complete....');
                                //unblockUI();
                            }
        }
    );

Ответы [ 3 ]

1 голос
/ 04 апреля 2011

Вот как я тестирую в консоли javascript:

var j = {"answer":{"isPresent":true,"test":{"string":["text you want"]},"Id":310}};
console.log(j.answer.test.string)
>> ["text you want"]

В приведенном выше результате j.answer.test.string по-прежнему является объектом, поэтому вам нужно указать желаемое значение узла.

Итак, в своем коде вы можете сделать это:

var testString = data.answer.test.string[0];
$("#textArea").val(testString);

Однако я предлагаю вам не использовать «строку» в качестве идентификатора переменной. Вместо этого используйте что-то вроде "str".

Горы: http://json.org/js.html

1 голос
/ 04 апреля 2011

вы захотите использовать метод JSON.stringify, предоставляемый библиотекой JSON2 и изначально большинством браузеров (кроме IE <= 7), если вы хотите сериализованную версию JSON данных в область текста. </p>

0 голосов
/ 04 апреля 2011

В данный момент данные внутри test являются объектом. Вы назвали переменную testString, но на самом деле значение testString является объектом {"string":[""]},"Id":310}

Если вам нужно что-то кроме необработанных данных json внутри текстового поля, вам нужно получить доступ к двум полям внутри test и объединить их в нужный вам формат. Если с сырым json все в порядке, см. @ tobyodavies отличный ответ. :)

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