Не в состоянии разобрать JSON в JQuery - PullRequest
0 голосов
/ 20 сентября 2011

Я использую jquery.parseJSON(), но этого не происходит. Я делаю ajax-вызов на сервер, а затем в случае успеха пытаюсь проанализировать данные, полученные с сервера, используя jquery.parseJSON(), но это не работает.

function getIdVals(id){
        $.ajax(
            {
                url: "MyServlet",
                data: "Id="+id,
                cache: false,
                success: function(html){
                    alert(html);
                    var obj = jquery.parseJSON(html);
                    alert(obj.data);
                }
            }
        );
    }

Ответ, полученный от сервера, выглядит примерно так:

'{ "data" : "{ aas:five,asda:five,alskjaskdakbd:two,test:two,asddas:five,
             lasnd:five,ad:five,this:two,smd:five,alskjaskdakbdals:four,}"}'

Когда я пытаюсь поместить указанную выше строку в функцию jquery.parseJSON, она работает нормально, но не знаю, почему ее запись как jquery.parseJSON(html) не работает.

Как я могу решить это?

Ответы [ 3 ]

1 голос
/ 20 сентября 2011

json, который вы получаете, действителен, это должно быть что-то вроде

{
    "data": {
        "aas": "five",
        "asda": "five",
        "alskjaskdakbd": "two",
        "test": "two",
        "asddas": "five",
        "lasnd": "five",
        "ad": "five",
        "this": "two",
        "smd": "five",
        "alskjaskdakbdals": "four"
    }
}

, а затем, как @zerkms ответил

function getIdVals(id){
        $.ajax(
            {
                url: "MyServlet",
                data: "Id="+id,
                cache: false,
                dataType: 'json', // <<<<--------
                success: function(json){
                    // work with json here                    
                }
            }
        );
    }
0 голосов
/ 20 сентября 2011

Ваш JSON не верен.Ошибки в json:

'{ "data" : "{ aas:five,asda:five,alskjaskdakbd:two,test:two,asddas:five,
             lasnd:five,ad:five,this:two,smd:five,alskjaskdakbdals:four,}"}'
  1. одинарные кавычки в начале и в конце.
  2. запятая в конце значения.
  3. Кажется, что выТакже хочу получить данные JSON в значении.Так что для этого также оберните записи в значения кавычками.

Таким образом, действительный json будет выглядеть так:

{ "data" : { "aas":"five","asda":"five","alskjaskdakbd":"two","test":"two",
            "asddas":"five","lasnd":"five","ad":"five","this":"two","smd":"five",
            "alskjaskdakbdals":"four"}}

Попробуйте получить этот тип json с сервера.

Что касается вызова jquery ajax, я не думаю, что требуется какое-либо изменение, если вы просто получаете эту строку json в качестве ответа на функцию успеха, и если вы получаете это как часть ответа с некоторыми вещами, то с другимихорошо объяснил это.


Ваш комментарий к ответу 3nigma :

    $.each(obj.data, function(key,val) {
        alert(key+" "+val);
    });
0 голосов
/ 20 сентября 2011

Вы можете указать dataType: 'json' атрибут для запроса, и вместо этого вы получите проанализированный объект в вашей функции

function getIdVals(id){
        $.ajax(
            {
                url: "MyServlet",
                data: "Id="+id,
                cache: false,
                dataType: 'json', // <<<<--------
                success: function(json){
                    // work with json here                    
                }
            }
        );
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...