JQuery JSON обработка ответов - PullRequest
0 голосов
/ 17 июня 2011

У меня есть ajax-запрос, написанный на jQuery, который возвращает допустимый JSON в этом формате

$.ajax({
   type     : 'POST',
   url      : 'ajax/job/getActiveJobs.php',
   success  : function(data){
       if(data[''] === true){
           alert('json decoded');
       }

       $('#waiting').hide(500);
       $('#tableData').html(data['content']);
       $('#message').removeClass().addClass((data.error === true)
       ?'error':'success').text(data.msg);
       if(data.error === true)
           $('#message')

   },
   error    : function(XMLHttpRequest, textStatus, errorThrown){
       $('#waiting').hide(500);
       $('#message').removeClass().addClass('error').html(data.msg);
   } })

Я так понимаю, это неправильно, так как данные не отображаются, если я использую

$('#mydiv').html(data);

Я получаю все данные и отображаю их.

любая помощь действительно ценится

Ответы [ 3 ]

4 голосов
/ 17 июня 2011

Установите dataType равным json, чтобы jQuery конвертировал JSON в JavaScript Object.

В качестве альтернативы, используйте getJSON() или отправьте application/json тип MIME.

1 голос
/ 17 июня 2011

Либо установите dataType на json, либо используйте var json = JSON.parse(data), чтобы сделать это вручную.

EDIT

Я добавляю это, потому что кто-то еще предложил eval, не делайте этого, потому что сначала он передается прямо в объект JSON без какой-либо санитарии, что позволяет сценариям проходить прямо в уязвимость XSS. .

0 голосов
/ 17 июня 2011

Данные - это Json, поэтому вам нужно сделать это:

success: function (data) {
  var newobject = eval(data);
  alert(newobject.msg);

}

или сделайте это:

$ajax({
    url: url,
    data: {},
   dataType: "json",
   success: function (newObject) {
   alert(newobject.msg);
}
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...